X-Git-Url: http://nitlanguage.org diff --git a/c_src/rapid_type_analysis.sep.1.c b/c_src/rapid_type_analysis.sep.1.c index dba7d20..760067d 100644 --- a/c_src/rapid_type_analysis.sep.1.c +++ b/c_src/rapid_type_analysis.sep.1.c @@ -7,10 +7,19 @@ val* var1 /* : RapidTypeAnalysis */; val* var_analysis /* var analysis: RapidTypeAnalysis */; var_mainmodule = p0; var1 = NEW_rapid_type_analysis__RapidTypeAnalysis(&type_rapid_type_analysis__RapidTypeAnalysis); -((void (*)(val*, val*, val*))(var1->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__init]))(var1, self, var_mainmodule) /* init on */; -CHECK_NEW_rapid_type_analysis__RapidTypeAnalysis(var1); +{ +((void (*)(val*, val*))(var1->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder_61d]))(var1, self) /* modelbuilder= on */; +} +{ +((void (*)(val*, val*))(var1->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule_61d]))(var1, var_mainmodule) /* mainmodule= on */; +} +{ +((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on */; +} var_analysis = var1; -((void (*)(val*))(var_analysis->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__run_analysis]))(var_analysis) /* run_analysis on */; +{ +rapid_type_analysis__RapidTypeAnalysis__run_analysis(var_analysis); /* Direct call rapid_type_analysis#RapidTypeAnalysis#run_analysis on */ +} var = var_analysis; goto RET_LABEL; RET_LABEL:; @@ -29,10 +38,11 @@ return var; val* rapid_type_analysis__RapidTypeAnalysis__modelbuilder(val* self) { val* var /* : ModelBuilder */; val* var1 /* : ModelBuilder */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dmodelbuilder].val; /* @modelbuilder on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @modelbuilder", "src/rapid_type_analysis.nit", 43); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -42,29 +52,43 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__modelbuilder(val* self) { val* var /* : ModelBuilder */; val* var1 /* : ModelBuilder */; -var1 = rapid_type_analysis__RapidTypeAnalysis__modelbuilder(self); +val* var3 /* : ModelBuilder */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method rapid_type_analysis#RapidTypeAnalysis#modelbuilder= for (self: RapidTypeAnalysis, ModelBuilder) */ void rapid_type_analysis__RapidTypeAnalysis__modelbuilder_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dmodelbuilder].val = p0; /* @modelbuilder on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val = p0; /* _modelbuilder on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#modelbuilder= for (self: Object, ModelBuilder) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__modelbuilder_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__modelbuilder_61d(self, p0); +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder= (self,p0) on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val = p0; /* _modelbuilder on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#mainmodule for (self: RapidTypeAnalysis): MModule */ val* rapid_type_analysis__RapidTypeAnalysis__mainmodule(val* self) { val* var /* : MModule */; val* var1 /* : MModule */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dmainmodule].val; /* @mainmodule on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mainmodule", "src/rapid_type_analysis.nit", 46); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -74,29 +98,43 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__mainmodule(val* self) { val* var /* : MModule */; val* var1 /* : MModule */; -var1 = rapid_type_analysis__RapidTypeAnalysis__mainmodule(self); +val* var3 /* : MModule */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method rapid_type_analysis#RapidTypeAnalysis#mainmodule= for (self: RapidTypeAnalysis, MModule) */ void rapid_type_analysis__RapidTypeAnalysis__mainmodule_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dmainmodule].val = p0; /* @mainmodule on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val = p0; /* _mainmodule on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#mainmodule= for (self: Object, MModule) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__mainmodule_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__mainmodule_61d(self, p0); +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule= (self,p0) on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val = p0; /* _mainmodule on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#live_types for (self: RapidTypeAnalysis): HashSet[MClassType] */ val* rapid_type_analysis__RapidTypeAnalysis__live_types(val* self) { val* var /* : HashSet[MClassType] */; val* var1 /* : HashSet[MClassType] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_types].val; /* @live_types on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @live_types", "src/rapid_type_analysis.nit", 50); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -106,29 +144,30 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_types(val* self) { val* var /* : HashSet[MClassType] */; val* var1 /* : HashSet[MClassType] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__live_types(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashSet[MClassType] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); } -/* method rapid_type_analysis#RapidTypeAnalysis#live_types= for (self: RapidTypeAnalysis, HashSet[MClassType]) */ -void rapid_type_analysis__RapidTypeAnalysis__live_types_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_types].val = p0; /* @live_types on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_types= for (self: Object, HashSet[MClassType]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_types_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__live_types_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method rapid_type_analysis#RapidTypeAnalysis#live_open_types for (self: RapidTypeAnalysis): HashSet[MClassType] */ val* rapid_type_analysis__RapidTypeAnalysis__live_open_types(val* self) { val* var /* : HashSet[MClassType] */; val* var1 /* : HashSet[MClassType] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_open_types].val; /* @live_open_types on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @live_open_types", "src/rapid_type_analysis.nit", 55); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 58); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -138,29 +177,30 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_open_types(val* self) { val* var /* : HashSet[MClassType] */; val* var1 /* : HashSet[MClassType] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__live_open_types(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashSet[MClassType] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 58); +show_backtrace(1); } -/* method rapid_type_analysis#RapidTypeAnalysis#live_open_types= for (self: RapidTypeAnalysis, HashSet[MClassType]) */ -void rapid_type_analysis__RapidTypeAnalysis__live_open_types_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_open_types].val = p0; /* @live_open_types on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_open_types= for (self: Object, HashSet[MClassType]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_open_types_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__live_open_types_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method rapid_type_analysis#RapidTypeAnalysis#live_classes for (self: RapidTypeAnalysis): HashSet[MClass] */ val* rapid_type_analysis__RapidTypeAnalysis__live_classes(val* self) { val* var /* : HashSet[MClass] */; val* var1 /* : HashSet[MClass] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_classes].val; /* @live_classes on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @live_classes", "src/rapid_type_analysis.nit", 59); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 62); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -170,61 +210,63 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_classes(val* self) { val* var /* : HashSet[MClass] */; val* var1 /* : HashSet[MClass] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__live_classes(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashSet[MClass] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 62); +show_backtrace(1); } -/* method rapid_type_analysis#RapidTypeAnalysis#live_classes= for (self: RapidTypeAnalysis, HashSet[MClass]) */ -void rapid_type_analysis__RapidTypeAnalysis__live_classes_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_classes].val = p0; /* @live_classes on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_classes= for (self: Object, HashSet[MClass]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_classes_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__live_classes_61d(self, p0); +var = var1; RET_LABEL:; +return var; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_cast_types for (self: RapidTypeAnalysis): HashSet[MClassType] */ +/* method rapid_type_analysis#RapidTypeAnalysis#live_cast_types for (self: RapidTypeAnalysis): HashSet[MType] */ val* rapid_type_analysis__RapidTypeAnalysis__live_cast_types(val* self) { -val* var /* : HashSet[MClassType] */; -val* var1 /* : HashSet[MClassType] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_cast_types].val; /* @live_cast_types on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @live_cast_types", "src/rapid_type_analysis.nit", 62); -exit(1); +val* var /* : HashSet[MType] */; +val* var1 /* : HashSet[MType] */; +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 65); +show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_cast_types for (self: Object): HashSet[MClassType] */ +/* method rapid_type_analysis#RapidTypeAnalysis#live_cast_types for (self: Object): HashSet[MType] */ val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_cast_types(val* self) { -val* var /* : HashSet[MClassType] */; -val* var1 /* : HashSet[MClassType] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__live_cast_types(self); -var = var1; -RET_LABEL:; -return var; +val* var /* : HashSet[MType] */; +val* var1 /* : HashSet[MType] */; +val* var3 /* : HashSet[MType] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 65); +show_backtrace(1); } -/* method rapid_type_analysis#RapidTypeAnalysis#live_cast_types= for (self: RapidTypeAnalysis, HashSet[MClassType]) */ -void rapid_type_analysis__RapidTypeAnalysis__live_cast_types_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_cast_types].val = p0; /* @live_cast_types on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_cast_types= for (self: Object, HashSet[MClassType]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_cast_types_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__live_cast_types_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types for (self: RapidTypeAnalysis): HashSet[MType] */ val* rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types(val* self) { val* var /* : HashSet[MType] */; val* var1 /* : HashSet[MType] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_open_cast_types].val; /* @live_open_cast_types on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @live_open_cast_types", "src/rapid_type_analysis.nit", 65); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 68); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -234,29 +276,30 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types(val* self) { val* var /* : HashSet[MType] */; val* var1 /* : HashSet[MType] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashSet[MType] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 68); +show_backtrace(1); } -/* method rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types= for (self: RapidTypeAnalysis, HashSet[MType]) */ -void rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_open_cast_types].val = p0; /* @live_open_cast_types on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types= for (self: Object, HashSet[MType]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method rapid_type_analysis#RapidTypeAnalysis#live_methoddefs for (self: RapidTypeAnalysis): HashSet[MMethodDef] */ val* rapid_type_analysis__RapidTypeAnalysis__live_methoddefs(val* self) { val* var /* : HashSet[MMethodDef] */; val* var1 /* : HashSet[MMethodDef] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_methoddefs].val; /* @live_methoddefs on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @live_methoddefs", "src/rapid_type_analysis.nit", 69); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 72); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -266,29 +309,30 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_methoddefs(val* self) { val* var /* : HashSet[MMethodDef] */; val* var1 /* : HashSet[MMethodDef] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__live_methoddefs(self); -var = var1; -RET_LABEL:; -return var; +val* var3 /* : HashSet[MMethodDef] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 72); +show_backtrace(1); } -/* method rapid_type_analysis#RapidTypeAnalysis#live_methoddefs= for (self: RapidTypeAnalysis, HashSet[MMethodDef]) */ -void rapid_type_analysis__RapidTypeAnalysis__live_methoddefs_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_methoddefs].val = p0; /* @live_methoddefs on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_methoddefs= for (self: Object, HashSet[MMethodDef]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_methoddefs_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__live_methoddefs_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method rapid_type_analysis#RapidTypeAnalysis#live_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */ val* rapid_type_analysis__RapidTypeAnalysis__live_methods(val* self) { val* var /* : HashSet[MMethod] */; val* var1 /* : HashSet[MMethod] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_methods].val; /* @live_methods on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @live_methods", "src/rapid_type_analysis.nit", 72); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 75); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -298,1038 +342,2984 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_methods(val* self) { val* var /* : HashSet[MMethod] */; val* var1 /* : HashSet[MMethod] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__live_methods(self); -var = var1; -RET_LABEL:; -return var; -} -/* method rapid_type_analysis#RapidTypeAnalysis#live_methods= for (self: RapidTypeAnalysis, HashSet[MMethod]) */ -void rapid_type_analysis__RapidTypeAnalysis__live_methods_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_methods].val = p0; /* @live_methods on */ -RET_LABEL:; +val* var3 /* : HashSet[MMethod] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methods (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 75); +show_backtrace(1); } -/* method rapid_type_analysis#RapidTypeAnalysis#live_methods= for (self: Object, HashSet[MMethod]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_methods_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__live_methods_61d(self, p0); -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeAnalysis#live_super_sends for (self: RapidTypeAnalysis): HashSet[MMethodDef] */ -val* rapid_type_analysis__RapidTypeAnalysis__live_super_sends(val* self) { -val* var /* : HashSet[MMethodDef] */; -val* var1 /* : HashSet[MMethodDef] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_super_sends].val; /* @live_super_sends on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @live_super_sends", "src/rapid_type_analysis.nit", 75); -exit(1); -} -var = var1; -RET_LABEL:; -return var; +var1 = var3; +RET_LABEL2:(void)0; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_super_sends for (self: Object): HashSet[MMethodDef] */ -val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_super_sends(val* self) { -val* var /* : HashSet[MMethodDef] */; -val* var1 /* : HashSet[MMethodDef] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__live_super_sends(self); var = var1; RET_LABEL:; return var; } -/* method rapid_type_analysis#RapidTypeAnalysis#live_super_sends= for (self: RapidTypeAnalysis, HashSet[MMethodDef]) */ -void rapid_type_analysis__RapidTypeAnalysis__live_super_sends_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dlive_super_sends].val = p0; /* @live_super_sends on */ -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeAnalysis#live_super_sends= for (self: Object, HashSet[MMethodDef]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_super_sends_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__live_super_sends_61d(self, p0); -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */ -val* rapid_type_analysis__RapidTypeAnalysis__totry_methods(val* self) { -val* var /* : HashSet[MMethod] */; -val* var1 /* : HashSet[MMethod] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dtotry_methods].val; /* @totry_methods on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @totry_methods", "src/rapid_type_analysis.nit", 78); -exit(1); +/* method rapid_type_analysis#RapidTypeAnalysis#live_callsites for (self: RapidTypeAnalysis): HashSet[CallSite] */ +val* rapid_type_analysis__RapidTypeAnalysis__live_callsites(val* self) { +val* var /* : HashSet[CallSite] */; +val* var1 /* : HashSet[CallSite] */; +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_callsites].val; /* _live_callsites on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_callsites"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 78); +show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods for (self: Object): HashSet[MMethod] */ -val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__totry_methods(val* self) { -val* var /* : HashSet[MMethod] */; -val* var1 /* : HashSet[MMethod] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__totry_methods(self); +/* method rapid_type_analysis#RapidTypeAnalysis#live_callsites for (self: Object): HashSet[CallSite] */ +val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_callsites(val* self) { +val* var /* : HashSet[CallSite] */; +val* var1 /* : HashSet[CallSite] */; +val* var3 /* : HashSet[CallSite] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_callsites (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_callsites].val; /* _live_callsites on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_callsites"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 78); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods= for (self: RapidTypeAnalysis, HashSet[MMethod]) */ -void rapid_type_analysis__RapidTypeAnalysis__totry_methods_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dtotry_methods].val = p0; /* @totry_methods on */ -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods= for (self: Object, HashSet[MMethod]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__totry_methods_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__totry_methods_61d(self, p0); -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeAnalysis#todo for (self: RapidTypeAnalysis): List[MMethodDef] */ -val* rapid_type_analysis__RapidTypeAnalysis__todo(val* self) { -val* var /* : List[MMethodDef] */; -val* var1 /* : List[MMethodDef] */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dtodo].val; /* @todo on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @todo", "src/rapid_type_analysis.nit", 81); -exit(1); +/* method rapid_type_analysis#RapidTypeAnalysis#live_targets_cache for (self: RapidTypeAnalysis): HashMap2[MType, MProperty, Set[MMethodDef]] */ +val* rapid_type_analysis__RapidTypeAnalysis__live_targets_cache(val* self) { +val* var /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; +val* var1 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 81); +show_backtrace(1); } var = var1; RET_LABEL:; return var; } -/* method rapid_type_analysis#RapidTypeAnalysis#todo for (self: Object): List[MMethodDef] */ -val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__todo(val* self) { -val* var /* : List[MMethodDef] */; -val* var1 /* : List[MMethodDef] */; -var1 = rapid_type_analysis__RapidTypeAnalysis__todo(self); +/* method rapid_type_analysis#RapidTypeAnalysis#live_targets_cache for (self: Object): HashMap2[MType, MProperty, Set[MMethodDef]] */ +val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_targets_cache(val* self) { +val* var /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; +val* var1 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; +val* var3 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_targets_cache (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 81); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } -/* method rapid_type_analysis#RapidTypeAnalysis#todo= for (self: RapidTypeAnalysis, List[MMethodDef]) */ -void rapid_type_analysis__RapidTypeAnalysis__todo_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dtodo].val = p0; /* @todo on */ -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeAnalysis#todo= for (self: Object, List[MMethodDef]) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__todo_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__todo_61d(self, p0); -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeAnalysis#run_analysis for (self: RapidTypeAnalysis) */ -void rapid_type_analysis__RapidTypeAnalysis__run_analysis(val* self) { -val* var /* : MModule */; -val* var1 /* : nullable MClassType */; -val* var_maintype /* var maintype: nullable MClassType */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : MModule */; -static val* varonce; -val* var5 /* : String */; -char* var6 /* : NativeString */; -long var7 /* : Int */; -val* var8 /* : String */; -val* var9 /* : MClass */; -val* var10 /* : nullable MMethod */; -val* var_initprop /* var initprop: nullable MMethod */; -val* var11 /* : null */; +/* method rapid_type_analysis#RapidTypeAnalysis#live_targets for (self: RapidTypeAnalysis, CallSite): Set[MMethodDef] */ +val* rapid_type_analysis__RapidTypeAnalysis__live_targets(val* self, val* p0) { +val* var /* : Set[MMethodDef] */; +val* var_callsite /* var callsite: CallSite */; +val* var1 /* : MType */; +val* var3 /* : MType */; +val* var_mtype /* var mtype: MType */; +val* var4 /* : nullable MClassType */; +val* var6 /* : nullable MClassType */; +val* var_anchor /* var anchor: nullable MClassType */; +val* var7 /* : null */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var11 /* : Bool */; short int var12 /* : Bool */; -val* var13 /* : MModule */; -static val* varonce14; -val* var15 /* : String */; -char* var16 /* : NativeString */; -long var17 /* : Int */; -val* var18 /* : String */; -val* var19 /* : MClass */; -val* var20 /* : nullable MMethod */; -val* var_mainprop /* var mainprop: nullable MMethod */; -val* var21 /* : null */; -short int var22 /* : Bool */; -val* var23 /* : ModelBuilder */; -val* var24 /* : Model */; -static val* varonce25; -val* var26 /* : String */; -char* var27 /* : NativeString */; -long var28 /* : Int */; -val* var29 /* : String */; -val* var30 /* : nullable Array[MClass] */; -val* var_classes /* var classes: nullable Array[MClass] */; -val* var31 /* : null */; -short int var32 /* : Bool */; -val* var33 /* : Iterator[nullable Object] */; -short int var34 /* : Bool */; +short int var13 /* : Bool */; +val* var14 /* : MModule */; +val* var16 /* : MModule */; +val* var17 /* : MType */; +val* var18 /* : MType */; +short int var19 /* : Bool */; +int cltype; +int idtype; +val* var20 /* : MClass */; +val* var22 /* : MClass */; +val* var23 /* : MClassDef */; +val* var25 /* : MClassDef */; +val* var26 /* : MClassType */; +val* var28 /* : MClassType */; +val* var29 /* : MMethod */; +val* var31 /* : MMethod */; +val* var_mproperty /* var mproperty: MMethod */; +val* var32 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; +val* var34 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; val* var35 /* : nullable Object */; -val* var_c /* var c: MClass */; -val* var36 /* : MClassType */; -val* var37 /* : MClassType */; -val* var38 /* : List[MMethodDef] */; -short int var39 /* : Bool */; +val* var_res /* var res: nullable Set[MMethodDef] */; +val* var36 /* : null */; +short int var37 /* : Bool */; +short int var38 /* : Bool */; short int var40 /* : Bool */; -val* var41 /* : List[MMethodDef] */; -val* var42 /* : nullable Object */; -val* var_mmethoddef /* var mmethoddef: MMethodDef */; -val* var43 /* : RapidTypeVisitor */; -val* var44 /* : MClassDef */; -val* var45 /* : MClassType */; -val* var_v /* var v: RapidTypeVisitor */; -val* var46 /* : nullable MSignature */; -long var47 /* : Int */; -long var_vararg_rank /* var vararg_rank: Int */; -long var48 /* : Int */; -long var49 /* : Int */; -long var51 /* : Int */; +short int var41 /* : Bool */; +short int var42 /* : Bool */; +val* var43 /* : ArraySet[MMethodDef] */; +val* var44 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; +val* var46 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */; +val* var47 /* : HashSet[MClass] */; +val* var49 /* : HashSet[MClass] */; +val* var_ /* var : HashSet[MClass] */; +val* var50 /* : Iterator[Object] */; +val* var_51 /* var : Iterator[MClass] */; short int var52 /* : Bool */; -short int var54 /* : Bool */; -int cltype; -int idtype; -short int var55 /* : Bool */; -val* var56 /* : ModelBuilder */; -val* var57 /* : HashMap[MPropDef, APropdef] */; -val* var58 /* : nullable Object */; -val* var_node /* var node: APropdef */; -val* var59 /* : nullable MSignature */; -val* var60 /* : Array[MParameter] */; -val* var61 /* : nullable Object */; -val* var62 /* : MType */; -val* var_elttype /* var elttype: MType */; -val* var63 /* : MModule */; -static val* varonce64; -val* var65 /* : String */; -char* var66 /* : NativeString */; -long var67 /* : Int */; -val* var68 /* : String */; -val* var69 /* : MClass */; -val* var70 /* : Array[MType] */; -long var71 /* : Int */; -val* var72 /* : NativeArray[MType] */; -val* var73 /* : MClassType */; -val* var_vararg /* var vararg: MClassType */; -val* var74 /* : ModelBuilder */; -static val* varonce75; -val* var76 /* : String */; -char* var77 /* : NativeString */; -long var78 /* : Int */; -val* var79 /* : String */; -val* var80 /* : MClass */; -val* var81 /* : MModule */; -val* var82 /* : MMethod */; -val* var83 /* : MModule */; -static val* varonce84; -val* var85 /* : String */; -char* var86 /* : NativeString */; -long var87 /* : Int */; -val* var88 /* : String */; -val* var89 /* : MClass */; -val* var90 /* : Array[MType] */; -long var91 /* : Int */; -val* var92 /* : NativeArray[MType] */; -val* var93 /* : MClassType */; -val* var_native /* var native: MClassType */; -val* var94 /* : Range[Int] */; -long var95 /* : Int */; -val* var96 /* : nullable MSignature */; -long var97 /* : Int */; -val* var98 /* : Discrete */; -val* var99 /* : Discrete */; -val* var100 /* : Iterator[nullable Object] */; -short int var101 /* : Bool */; -val* var102 /* : nullable Object */; -long var_i /* var i: Int */; -long var103 /* : Int */; -val* var104 /* : MProperty */; -val* var105 /* : MPropDef */; -val* var106 /* : nullable MSignature */; -val* var107 /* : Array[MParameter] */; -val* var108 /* : nullable Object */; -val* var109 /* : MType */; -val* var_origtype /* var origtype: MType */; -short int var110 /* : Bool */; -short int var111 /* : Bool */; -val* var113 /* : nullable MSignature */; -val* var114 /* : Array[MParameter] */; -val* var115 /* : nullable Object */; -val* var116 /* : MType */; -val* var_paramtype /* var paramtype: MType */; -val* var117 /* : ModelBuilder */; -val* var118 /* : HashMap[MPropDef, APropdef] */; -short int var119 /* : Bool */; -short int var120 /* : Bool */; -val* var121 /* : MProperty */; -val* var122 /* : String */; -static val* varonce123; -val* var124 /* : String */; -char* var125 /* : NativeString */; -long var126 /* : Int */; -val* var127 /* : String */; -short int var128 /* : Bool */; -val* var129 /* : ModelBuilder */; -val* var130 /* : HashMap[MClassDef, AClassdef] */; -val* var131 /* : MClassDef */; -val* var132 /* : nullable Object */; -val* var_nclassdef /* var nclassdef: AClassdef */; -val* var133 /* : nullable Collection[MMethod] */; -val* var_super_inits /* var super_inits: nullable Collection[MMethod] */; -val* var134 /* : null */; -short int var135 /* : Bool */; -val* var136 /* : Iterator[nullable Object] */; -short int var137 /* : Bool */; -val* var138 /* : nullable Object */; -val* var_su /* var su: MMethod */; -val* var139 /* : MClassType */; -val* var142 /* : ModelBuilder */; -val* var143 /* : HashMap[MPropDef, APropdef] */; -val* var144 /* : nullable Object */; -val* var_npropdef /* var npropdef: APropdef */; -short int var145 /* : Bool */; -int cltype146; -int idtype147; -val* var148 /* : nullable Array[MMethod] */; -val* var_auto_super_inits /* var auto_super_inits: nullable Array[MMethod] */; -val* var149 /* : null */; -short int var150 /* : Bool */; -val* var151 /* : Iterator[nullable Object] */; -short int var152 /* : Bool */; -val* var153 /* : nullable Object */; -val* var_auto_super_init /* var auto_super_init: MMethod */; -val* var154 /* : MClassType */; -short int var156 /* : Bool */; -short int var157 /* : Bool */; -int cltype158; -int idtype159; -short int var_ /* var : Bool */; -short int var160 /* : Bool */; -int cltype161; -int idtype162; -val* var163 /* : nullable MSignature */; -val* var164 /* : nullable MType */; -val* var_ret /* var ret: nullable MType */; -short int var165 /* : Bool */; -short int var166 /* : Bool */; -short int var167 /* : Bool */; -val* var168 /* : null */; -short int var169 /* : Bool */; -short int var_170 /* var : Bool */; -short int var171 /* : Bool */; -int cltype172; -int idtype173; -short int var_174 /* var : Bool */; -val* var175 /* : MClass */; -val* var176 /* : MClassKind */; -val* var177 /* : MClassKind */; -short int var178 /* : Bool */; -short int var_179 /* var : Bool */; -val* var180 /* : MClass */; -val* var181 /* : MClassKind */; -val* var182 /* : MClassKind */; -short int var183 /* : Bool */; -short int var184 /* : Bool */; -int cltype185; -int idtype186; -val* var187 /* : MClassType */; -val* var188 /* : List[MClassType] */; -val* var_todo_types /* var todo_types: List[MClassType] */; -val* var189 /* : HashSet[MClassType] */; -short int var190 /* : Bool */; -short int var191 /* : Bool */; -val* var192 /* : nullable Object */; -val* var_t /* var t: MClassType */; -val* var193 /* : HashSet[MClassType] */; -val* var194 /* : Iterator[nullable Object] */; -short int var195 /* : Bool */; -val* var196 /* : nullable Object */; -val* var_ot /* var ot: MClassType */; -val* var197 /* : MModule */; -short int var198 /* : Bool */; -short int var199 /* : Bool */; -val* var201 /* : MModule */; -val* var202 /* : MType */; -val* var_rt /* var rt: MClassType */; -val* var203 /* : HashSet[MClassType] */; -short int var204 /* : Bool */; -val* var205 /* : HashSet[MClassType] */; -val* var207 /* : HashSet[MType] */; -val* var208 /* : Iterator[nullable Object] */; -short int var209 /* : Bool */; -val* var210 /* : nullable Object */; -val* var_ot211 /* var ot: MType */; -val* var212 /* : HashSet[MClassType] */; -val* var213 /* : Iterator[nullable Object] */; -short int var214 /* : Bool */; -val* var215 /* : nullable Object */; -val* var_t216 /* var t: MClassType */; -val* var217 /* : MModule */; -short int var218 /* : Bool */; -short int var219 /* : Bool */; -val* var221 /* : MModule */; -val* var222 /* : MType */; -val* var_rt223 /* var rt: MType */; -short int var224 /* : Bool */; -int cltype225; -int idtype226; -val* var227 /* : MType */; -short int var228 /* : Bool */; -int cltype229; -int idtype230; -val* var231 /* : HashSet[MClassType] */; -var = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MModule__sys_type]))(var) /* sys_type on */; -var_maintype = var1; -var2 = NULL; -if (var_maintype == NULL) { -var3 = 1; /* is null */ -} else { -var3 = 0; /* arg is null but recv is not */ +val* var53 /* : nullable Object */; +val* var_c /* var c: MClass */; +val* var54 /* : MClassDef */; +val* var56 /* : MClassDef */; +val* var57 /* : MClassType */; +val* var59 /* : MClassType */; +val* var_tc /* var tc: MClassType */; +val* var60 /* : MModule */; +val* var62 /* : MModule */; +val* var63 /* : null */; +short int var64 /* : Bool */; +short int var65 /* : Bool */; +val* var66 /* : MModule */; +val* var68 /* : MModule */; +val* var69 /* : MPropDef */; +val* var_d /* var d: MMethodDef */; +var_callsite = p0; +{ +{ /* Inline typing#CallSite#recv (var_callsite) on */ +var3 = var_callsite->attrs[COLOR_typing__CallSite___recv].val; /* _recv on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv"); +PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 469); +show_backtrace(1); } -if (var3){ -goto RET_LABEL; -} else { +var1 = var3; +RET_LABEL2:(void)0; } -((void (*)(val*, val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_new]))(self, var_maintype, var_maintype) /* add_new on */; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -if (varonce) { -var5 = varonce; -} else { -var6 = "init"; -var7 = 4; -var8 = string__NativeString__to_s_with_length(var6, var7); -var5 = var8; -varonce = var5; -} -var9 = ((val* (*)(val*))(var_maintype->class->vft[COLOR_model__MClassType__mclass]))(var_maintype) /* mclass on */; -var10 = ((val* (*)(val*, val*, val*))(var4->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var4, var5, var9) /* try_get_primitive_method on */; -var_initprop = var10; -var11 = NULL; -if (var_initprop == NULL) { -var12 = 0; /* is null */ -} else { -var12 = 1; /* arg is null and recv is not */ } -if (var12){ -((void (*)(val*, val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_send]))(self, var_maintype, var_initprop) /* add_send on */; -} else { +var_mtype = var1; +{ +{ /* Inline typing#CallSite#anchor (var_callsite) on */ +var6 = var_callsite->attrs[COLOR_typing__CallSite___anchor].val; /* _anchor on */ +var4 = var6; +RET_LABEL5:(void)0; } -var13 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -if (varonce14) { -var15 = varonce14; -} else { -var16 = "main"; -var17 = 4; -var18 = string__NativeString__to_s_with_length(var16, var17); -var15 = var18; -varonce14 = var15; } -var19 = ((val* (*)(val*))(var_maintype->class->vft[COLOR_model__MClassType__mclass]))(var_maintype) /* mclass on */; -var20 = ((val* (*)(val*, val*, val*))(var13->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var13, var15, var19) /* try_get_primitive_method on */; -var_mainprop = var20; -var21 = NULL; -if (var_mainprop == NULL) { -var22 = 0; /* is null */ +var_anchor = var4; +var7 = NULL; +if (var_anchor == NULL) { +var8 = 0; /* is null */ } else { -var22 = 1; /* arg is null and recv is not */ +var8 = 1; /* arg is null and recv is not */ } -if (var22){ -((void (*)(val*, val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_send]))(self, var_maintype, var_mainprop) /* add_send on */; -} else { +if (0) { +{ /* Inline kernel#Object#!= (var_anchor,var7) on */ +var_other = var7; +{ +var12 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other) /* == on */; +var11 = var12; } -var23 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -var24 = ((val* (*)(val*))(var23->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(var23) /* model on */; -if (varonce25) { -var26 = varonce25; -} else { -var27 = "Bool"; -var28 = 4; -var29 = string__NativeString__to_s_with_length(var27, var28); -var26 = var29; -varonce25 = var26; +var13 = !var11; +var9 = var13; +goto RET_LABEL10; +RET_LABEL10:(void)0; } -var30 = ((val* (*)(val*, val*))(var24->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var24, var26) /* get_mclasses_by_name on */; -var_classes = var30; -var31 = NULL; -if (var_classes == NULL) { -var32 = 0; /* is null */ -} else { -var32 = 1; /* arg is null and recv is not */ +var8 = var9; } -if (var32){ -var33 = ((val* (*)(val*))(var_classes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_classes) /* iterator on */; -for(;;) { -var34 = ((short int (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var33) /* is_ok on */; -if(!var34) break; -var35 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__item]))(var33) /* item on */; -var_c = var35; -var36 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on */; -var37 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_new]))(self, var36, var37) /* add_new on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__next]))(var33) /* next on */; +if (var8){ +{ +{ /* Inline typing#CallSite#mmodule (var_callsite) on */ +var16 = var_callsite->attrs[COLOR_typing__CallSite___mmodule].val; /* _mmodule on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 472); +show_backtrace(1); } -BREAK_label: (void)0; -} else { +var14 = var16; +RET_LABEL15:(void)0; } -for(;;) { -var38 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__todo]))(self) /* todo on */; -var39 = ((short int (*)(val*))(var38->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var38) /* is_empty on */; -var40 = !var39; -if (!var40) break; -var41 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__todo]))(self) /* todo on */; -var42 = ((val* (*)(val*))(var41->class->vft[COLOR_abstract_collection__Sequence__shift]))(var41) /* shift on */; -var_mmethoddef = var42; -var43 = NEW_rapid_type_analysis__RapidTypeVisitor(&type_rapid_type_analysis__RapidTypeVisitor); -var44 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var45 = ((val* (*)(val*))(var44->class->vft[COLOR_model__MClassDef__bound_mtype]))(var44) /* bound_mtype on */; -((void (*)(val*, val*, val*, val*))(var43->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__init]))(var43, self, var45, var_mmethoddef) /* init on */; -CHECK_NEW_rapid_type_analysis__RapidTypeVisitor(var43); -var_v = var43; -var46 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on */; -if (var46 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 108); -exit(1); -} else { -var47 = ((long (*)(val*))(var46->class->vft[COLOR_model__MSignature__vararg_rank]))(var46) /* vararg_rank on */; -} -var_vararg_rank = var47; -var48 = 1; -{ /* Inline kernel#Int#unary - (var48) */ -var51 = -var48; -var49 = var51; -goto RET_LABEL50; -RET_LABEL50:(void)0; -} -{ /* Inline kernel#Int#> (var_vararg_rank,var49) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var54 = 1; /* easy isa OTHER*/ -if (!var54) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259); -exit(1); -} -var55 = var_vararg_rank > var49; -var52 = var55; -goto RET_LABEL53; -RET_LABEL53:(void)0; } -if (var52){ -var56 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -var57 = ((val* (*)(val*))(var56->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var56) /* mpropdef2npropdef on */; -var58 = ((val* (*)(val*, val*))(var57->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var57, var_mmethoddef) /* [] on */; -var_node = var58; -var59 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on */; -if (var59 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 111); -exit(1); -} else { -var60 = ((val* (*)(val*))(var59->class->vft[COLOR_model__MSignature__mparameters]))(var59) /* mparameters on */; -} -var61 = ((val* (*)(val*, long))(var60->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var60, var_vararg_rank) /* [] on */; -var62 = ((val* (*)(val*))(var61->class->vft[COLOR_model__MParameter__mtype]))(var61) /* mtype on */; -var_elttype = var62; -var63 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -if (varonce64) { -var65 = varonce64; -} else { -var66 = "Array"; -var67 = 5; -var68 = string__NativeString__to_s_with_length(var66, var67); -var65 = var68; -varonce64 = var65; -} -var69 = ((val* (*)(val*, val*))(var63->class->vft[COLOR_model__MModule__get_primitive_class]))(var63, var65) /* get_primitive_class on */; -var70 = NEW_array__Array(&type_array__Arraymodel__MType); -{ /* var70 = array_instance Array[MType] */ -var71 = 1; -var72 = NEW_array__NativeArray(var71, &type_array__NativeArraymodel__MType); -((struct instance_array__NativeArray*)var72)->values[0] = (val*) var_elttype; -((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on */; -CHECK_NEW_array__Array(var70); -} -var73 = ((val* (*)(val*, val*))(var69->class->vft[COLOR_model__MClass__get_mtype]))(var69, var70) /* get_mtype on */; -var_vararg = var73; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_vararg) /* add_type on */; -var74 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -if (varonce75) { -var76 = varonce75; -} else { -var77 = "with_native"; -var78 = 11; -var79 = string__NativeString__to_s_with_length(var77, var78); -var76 = var79; -varonce75 = var76; -} -var80 = ((val* (*)(val*))(var_vararg->class->vft[COLOR_model__MClassType__mclass]))(var_vararg) /* mclass on */; -var81 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var82 = ((val* (*)(val*, val*, val*, val*, val*))(var74->class->vft[COLOR_modelbuilder__ModelBuilder__force_get_primitive_method]))(var74, var_node, var76, var80, var81) /* force_get_primitive_method on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var_vararg, var82) /* add_monomorphic_send on */; -var83 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -if (varonce84) { -var85 = varonce84; -} else { -var86 = "NativeArray"; -var87 = 11; -var88 = string__NativeString__to_s_with_length(var86, var87); -var85 = var88; -varonce84 = var85; -} -var89 = ((val* (*)(val*, val*))(var83->class->vft[COLOR_model__MModule__get_primitive_class]))(var83, var85) /* get_primitive_class on */; -var90 = NEW_array__Array(&type_array__Arraymodel__MType); -{ /* var90 = array_instance Array[MType] */ -var91 = 1; -var92 = NEW_array__NativeArray(var91, &type_array__NativeArraymodel__MType); -((struct instance_array__NativeArray*)var92)->values[0] = (val*) var_elttype; -((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on */; -CHECK_NEW_array__Array(var90); -} -var93 = ((val* (*)(val*, val*))(var89->class->vft[COLOR_model__MClass__get_mtype]))(var89, var90) /* get_mtype on */; -var_native = var93; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_native) /* add_type on */; -} else { -} -var94 = NEW_range__Range(&type_range__Rangekernel__Int); -var95 = 0; -var96 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on */; -if (var96 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 121); -exit(1); -} else { -var97 = ((long (*)(val*))(var96->class->vft[COLOR_model__MSignature__arity]))(var96) /* arity on */; -} -var98 = BOX_kernel__Int(var95); /* autobox from Int to Discrete */ -var99 = BOX_kernel__Int(var97); /* autobox from Int to Discrete */ -((void (*)(val*, val*, val*))(var94->class->vft[COLOR_range__Range__without_last]))(var94, var98, var99) /* without_last on */; -CHECK_NEW_range__Range(var94); -var100 = ((val* (*)(val*))(var94->class->vft[COLOR_abstract_collection__Collection__iterator]))(var94) /* iterator on */; -for(;;) { -var101 = ((short int (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var100) /* is_ok on */; -if(!var101) break; -var102 = ((val* (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__item]))(var100) /* item on */; -var103 = ((struct instance_kernel__Int*)var102)->value; /* autounbox from nullable Object to Int */; -var_i = var103; -var104 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on */; -var105 = ((val* (*)(val*))(var104->class->vft[COLOR_model__MProperty__intro]))(var104) /* intro on */; -var106 = ((val* (*)(val*))(var105->class->vft[COLOR_model__MMethodDef__msignature]))(var105) /* msignature on */; -if (var106 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 122); -exit(1); -} else { -var107 = ((val* (*)(val*))(var106->class->vft[COLOR_model__MSignature__mparameters]))(var106) /* mparameters on */; -} -var108 = ((val* (*)(val*, long))(var107->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var107, var_i) /* [] on */; -var109 = ((val* (*)(val*))(var108->class->vft[COLOR_model__MParameter__mtype]))(var108) /* mtype on */; -var_origtype = var109; -var110 = ((short int (*)(val*))(var_origtype->class->vft[COLOR_model__MType__need_anchor]))(var_origtype) /* need_anchor on */; -var111 = !var110; -if (var111){ -goto CONTINUE_label112; -} else { -} -var113 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on */; -if (var113 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 124); -exit(1); -} else { -var114 = ((val* (*)(val*))(var113->class->vft[COLOR_model__MSignature__mparameters]))(var113) /* mparameters on */; -} -var115 = ((val* (*)(val*, long))(var114->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var114, var_i) /* [] on */; -var116 = ((val* (*)(val*))(var115->class->vft[COLOR_model__MParameter__mtype]))(var115) /* mtype on */; -var_paramtype = var116; -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_cast]))(self, var_paramtype) /* add_cast on */; -CONTINUE_label112: (void)0; -((void (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__next]))(var100) /* next on */; -} -BREAK_label112: (void)0; -var117 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -var118 = ((val* (*)(val*))(var117->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var117) /* mpropdef2npropdef on */; -var119 = ((short int (*)(val*, val*))(var118->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var118, var_mmethoddef) /* has_key on */; -var120 = !var119; -if (var120){ -var121 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on */; -var122 = ((val* (*)(val*))(var121->class->vft[COLOR_model__MProperty__name]))(var121) /* name on */; -if (varonce123) { -var124 = varonce123; -} else { -var125 = "init"; -var126 = 4; -var127 = string__NativeString__to_s_with_length(var125, var126); -var124 = var127; -varonce123 = var124; -} -var128 = ((short int (*)(val*, val*))(var122->class->vft[COLOR_kernel__Object___61d_61d]))(var122, var124) /* == on */; -if (var128){ -var129 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -var130 = ((val* (*)(val*))(var129->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var129) /* mclassdef2nclassdef on */; -var131 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var132 = ((val* (*)(val*, val*))(var130->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var130, var131) /* [] on */; -var_nclassdef = var132; -var133 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__super_inits]))(var_nclassdef) /* super_inits on */; -var_super_inits = var133; -var134 = NULL; -if (var_super_inits == NULL) { -var135 = 0; /* is null */ -} else { -var135 = 1; /* arg is null and recv is not */ -} -if (var135){ -var136 = ((val* (*)(val*))(var_super_inits->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_super_inits) /* iterator on */; -for(;;) { -var137 = ((short int (*)(val*))(var136->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var136) /* is_ok on */; -if(!var137) break; -var138 = ((val* (*)(val*))(var136->class->vft[COLOR_abstract_collection__Iterator__item]))(var136) /* item on */; -var_su = var138; -var139 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(var_v) /* receiver on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var139, var_su) /* add_monomorphic_send on */; -CONTINUE_label140: (void)0; -((void (*)(val*))(var136->class->vft[COLOR_abstract_collection__Iterator__next]))(var136) /* next on */; +{ +var17 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var14, var_anchor) /* anchor_to on */; } -BREAK_label140: (void)0; +var_mtype = var17; } else { } -} else { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/rapid_type_analysis.nit", 142); -exit(1); +{ +var18 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on */; } -goto CONTINUE_label141; +var_mtype = var18; +/* isa MClassType */ +cltype = type_model__MClassType.color; +idtype = type_model__MClassType.id; +if(cltype >= var_mtype->type->table_size) { +var19 = 0; } else { +var19 = var_mtype->type->type_table[cltype] == idtype; } -var142 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -var143 = ((val* (*)(val*))(var142->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var142) /* mpropdef2npropdef on */; -var144 = ((val* (*)(val*, val*))(var143->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var143, var_mmethoddef) /* [] on */; -var_npropdef = var144; -/* isa AConcreteMethPropdef */ -cltype146 = type_parser_nodes__AConcreteMethPropdef.color; -idtype147 = type_parser_nodes__AConcreteMethPropdef.id; -if(cltype146 >= var_npropdef->type->table_size) { -var145 = 0; -} else { -var145 = var_npropdef->type->type_table[cltype146] == idtype147; +if (unlikely(!var19)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 90); +show_backtrace(1); } -if (var145){ -var148 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_auto_super_init__AConcreteMethPropdef__auto_super_inits]))(var_npropdef) /* auto_super_inits on */; -var_auto_super_inits = var148; -var149 = NULL; -if (var_auto_super_inits == NULL) { -var150 = 0; /* is null */ -} else { -var150 = 1; /* arg is null and recv is not */ +{ +{ /* Inline model#MClassType#mclass (var_mtype) on */ +var22 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); } -if (var150){ -var151 = ((val* (*)(val*))(var_auto_super_inits->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_auto_super_inits) /* iterator on */; -for(;;) { -var152 = ((short int (*)(val*))(var151->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var151) /* is_ok on */; -if(!var152) break; -var153 = ((val* (*)(val*))(var151->class->vft[COLOR_abstract_collection__Iterator__item]))(var151) /* item on */; -var_auto_super_init = var153; -var154 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(var_v) /* receiver on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var154, var_auto_super_init) /* add_monomorphic_send on */; -CONTINUE_label155: (void)0; -((void (*)(val*))(var151->class->vft[COLOR_abstract_collection__Iterator__next]))(var151) /* next on */; +var20 = var22; +RET_LABEL21:(void)0; } -BREAK_label155: (void)0; -} else { } -} else { -/* isa AInternMethPropdef */ -cltype158 = type_parser_nodes__AInternMethPropdef.color; -idtype159 = type_parser_nodes__AInternMethPropdef.id; -if(cltype158 >= var_npropdef->type->table_size) { -var157 = 0; -} else { -var157 = var_npropdef->type->type_table[cltype158] == idtype159; +{ +{ /* Inline model#MClass#intro (var20) on */ +var25 = var20->attrs[COLOR_model__MClass___intro].val; /* _intro on */ +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420); +show_backtrace(1); } -var_ = var157; -if (var157){ -var156 = var_; -} else { -/* isa AExternMethPropdef */ -cltype161 = type_parser_nodes__AExternMethPropdef.color; -idtype162 = type_parser_nodes__AExternMethPropdef.id; -if(cltype161 >= var_npropdef->type->table_size) { -var160 = 0; -} else { -var160 = var_npropdef->type->type_table[cltype161] == idtype162; +var23 = var25; +RET_LABEL24:(void)0; } -var156 = var160; } -if (var156){ -var163 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on */; -if (var163 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 158); -exit(1); -} else { -var164 = ((val* (*)(val*))(var163->class->vft[COLOR_model__MSignature__return_mtype]))(var163) /* return_mtype on */; +{ +{ /* Inline model#MClassDef#bound_mtype (var23) on */ +var28 = var23->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var28 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); } -var_ret = var164; -var168 = NULL; -if (var_ret == NULL) { -var169 = 0; /* is null */ -} else { -var169 = 1; /* arg is null and recv is not */ +var26 = var28; +RET_LABEL27:(void)0; } -var_170 = var169; -if (var169){ -/* isa MClassType */ -cltype172 = type_model__MClassType.color; -idtype173 = type_model__MClassType.id; -if(cltype172 >= var_ret->type->table_size) { -var171 = 0; -} else { -var171 = var_ret->type->type_table[cltype172] == idtype173; } -var167 = var171; -} else { -var167 = var_170; +var_mtype = var26; +{ +{ /* Inline typing#CallSite#mproperty (var_callsite) on */ +var31 = var_callsite->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on */ +if (unlikely(var31 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483); +show_backtrace(1); } -var_174 = var167; -if (var167){ -var175 = ((val* (*)(val*))(var_ret->class->vft[COLOR_model__MClassType__mclass]))(var_ret) /* mclass on */; -var176 = ((val* (*)(val*))(var175->class->vft[COLOR_model__MClass__kind]))(var175) /* kind on */; -var177 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__abstract_kind]))(self) /* abstract_kind on */; -var178 = ((short int (*)(val*, val*))(var176->class->vft[COLOR_kernel__Object___33d_61d]))(var176, var177) /* != on */; -var166 = var178; -} else { -var166 = var_174; +var29 = var31; +RET_LABEL30:(void)0; } -var_179 = var166; -if (var166){ -var180 = ((val* (*)(val*))(var_ret->class->vft[COLOR_model__MClassType__mclass]))(var_ret) /* mclass on */; -var181 = ((val* (*)(val*))(var180->class->vft[COLOR_model__MClass__kind]))(var180) /* kind on */; -var182 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on */; -var183 = ((short int (*)(val*, val*))(var181->class->vft[COLOR_kernel__Object___33d_61d]))(var181, var182) /* != on */; -var165 = var183; -} else { -var165 = var_179; } -if (var165){ -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_ret) /* add_type on */; -} else { +var_mproperty = var29; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_targets_cache (self) on */ +var34 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on */ +if (unlikely(var34 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 81); +show_backtrace(1); } +var32 = var34; +RET_LABEL33:(void)0; +} +} +{ +var35 = more_collections__HashMap2___91d_93d(var32, var_mtype, var_mproperty); +} +var_res = var35; +var36 = NULL; +if (var_res == NULL) { +var37 = 0; /* is null */ } else { -/* isa AExternInitPropdef */ -cltype185 = type_parser_nodes__AExternInitPropdef.color; -idtype186 = type_parser_nodes__AExternInitPropdef.id; -if(cltype185 >= var_npropdef->type->table_size) { -var184 = 0; -} else { -var184 = var_npropdef->type->type_table[cltype185] == idtype186; +var37 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var36) on */ +var_other = var36; +{ +var41 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on */; +var40 = var41; +} +var42 = !var40; +var38 = var42; +goto RET_LABEL39; +RET_LABEL39:(void)0; +} +var37 = var38; } -if (var184){ -var187 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(var_v) /* receiver on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var187) /* add_type on */; +if (var37){ +var = var_res; +goto RET_LABEL; } else { } +var43 = NEW_array__ArraySet(&type_array__ArraySetmodel__MMethodDef); +{ +((void (*)(val*))(var43->class->vft[COLOR_kernel__Object__init]))(var43) /* init on */; } +var_res = var43; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_targets_cache (self) on */ +var46 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on */ +if (unlikely(var46 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 81); +show_backtrace(1); } -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_npropdef) /* enter_visit on */; -CONTINUE_label141: (void)0; +var44 = var46; +RET_LABEL45:(void)0; } -BREAK_label141: (void)0; -var188 = NEW_list__List(&type_list__Listmodel__MClassType); -((void (*)(val*))(var188->class->vft[COLOR_list__List__init]))(var188) /* init on */; -CHECK_NEW_list__List(var188); -var_todo_types = var188; -var189 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on */; -((void (*)(val*, val*))(var_todo_types->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_todo_types, var189) /* add_all on */; -for(;;) { -var190 = ((short int (*)(val*))(var_todo_types->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_todo_types) /* is_empty on */; -var191 = !var190; -if (!var191) break; -var192 = ((val* (*)(val*))(var_todo_types->class->vft[COLOR_abstract_collection__Sequence__shift]))(var_todo_types) /* shift on */; -var_t = var192; -var193 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_types]))(self) /* live_open_types on */; -var194 = ((val* (*)(val*))(var193->class->vft[COLOR_abstract_collection__Collection__iterator]))(var193) /* iterator on */; -for(;;) { -var195 = ((short int (*)(val*))(var194->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var194) /* is_ok on */; -if(!var195) break; -var196 = ((val* (*)(val*))(var194->class->vft[COLOR_abstract_collection__Iterator__item]))(var194) /* item on */; -var_ot = var196; -var197 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var198 = ((short int (*)(val*, val*, val*, val*))(var_ot->class->vft[COLOR_model__MType__can_resolve_for]))(var_ot, var_t, var_t, var197) /* can_resolve_for on */; -var199 = !var198; -if (var199){ -goto CONTINUE_label200; -} else { -} -var201 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var202 = ((val* (*)(val*, val*, val*))(var_ot->class->vft[COLOR_model__MType__anchor_to]))(var_ot, var201, var_t) /* anchor_to on */; -var_rt = var202; -var203 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on */; -var204 = ((short int (*)(val*, val*))(var203->class->vft[COLOR_abstract_collection__Collection__has]))(var203, var_rt) /* has on */; -if (var204){ -goto CONTINUE_label200; -} else { -} -var205 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on */; -((void (*)(val*, val*))(var205->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var205, var_rt) /* add on */; -((void (*)(val*, val*))(var_todo_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_todo_types, var_rt) /* add on */; -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__check_depth]))(self, var_rt) /* check_depth on */; -CONTINUE_label200: (void)0; -((void (*)(val*))(var194->class->vft[COLOR_abstract_collection__Iterator__next]))(var194) /* next on */; -} -BREAK_label200: (void)0; -CONTINUE_label206: (void)0; -} -BREAK_label206: (void)0; -var207 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types]))(self) /* live_open_cast_types on */; -var208 = ((val* (*)(val*))(var207->class->vft[COLOR_abstract_collection__Collection__iterator]))(var207) /* iterator on */; -for(;;) { -var209 = ((short int (*)(val*))(var208->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var208) /* is_ok on */; -if(!var209) break; -var210 = ((val* (*)(val*))(var208->class->vft[COLOR_abstract_collection__Iterator__item]))(var208) /* item on */; -var_ot211 = var210; -var212 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on */; -var213 = ((val* (*)(val*))(var212->class->vft[COLOR_abstract_collection__Collection__iterator]))(var212) /* iterator on */; +} +{ +more_collections__HashMap2___91d_93d_61d(var44, var_mtype, var_mproperty, var_res); /* Direct call more_collections#HashMap2#[]= on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on */ +var49 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on */ +if (unlikely(var49 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 62); +show_backtrace(1); +} +var47 = var49; +RET_LABEL48:(void)0; +} +} +var_ = var47; +{ +var50 = hash_collection__HashSet__iterator(var_); +} +var_51 = var50; for(;;) { -var214 = ((short int (*)(val*))(var213->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var213) /* is_ok on */; -if(!var214) break; -var215 = ((val* (*)(val*))(var213->class->vft[COLOR_abstract_collection__Iterator__item]))(var213) /* item on */; -var_t216 = var215; -var217 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var218 = ((short int (*)(val*, val*, val*, val*))(var_ot211->class->vft[COLOR_model__MType__can_resolve_for]))(var_ot211, var_t216, var_t216, var217) /* can_resolve_for on */; -var219 = !var218; -if (var219){ -goto CONTINUE_label220; -} else { +{ +var52 = ((short int (*)(val*))(var_51->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_51) /* is_ok on */; } -var221 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var222 = ((val* (*)(val*, val*, val*))(var_ot211->class->vft[COLOR_model__MType__anchor_to]))(var_ot211, var221, var_t216) /* anchor_to on */; -var_rt223 = var222; -/* isa MNullableType */ -cltype225 = type_model__MNullableType.color; -idtype226 = type_model__MNullableType.id; -if(cltype225 >= var_rt223->type->table_size) { -var224 = 0; -} else { -var224 = var_rt223->type->type_table[cltype225] == idtype226; +if (var52){ +{ +var53 = ((val* (*)(val*))(var_51->class->vft[COLOR_abstract_collection__Iterator__item]))(var_51) /* item on */; } -if (var224){ -var227 = ((val* (*)(val*))(var_rt223->class->vft[COLOR_model__MNullableType__mtype]))(var_rt223) /* mtype on */; -var_rt223 = var227; -} else { +var_c = var53; +{ +{ /* Inline model#MClass#intro (var_c) on */ +var56 = var_c->attrs[COLOR_model__MClass___intro].val; /* _intro on */ +if (unlikely(var56 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420); +show_backtrace(1); +} +var54 = var56; +RET_LABEL55:(void)0; } -/* isa MClassType */ -cltype229 = type_model__MClassType.color; -idtype230 = type_model__MClassType.id; -if(cltype229 >= var_rt223->type->table_size) { -var228 = 0; +} +{ +{ /* Inline model#MClassDef#bound_mtype (var54) on */ +var59 = var54->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var59 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var57 = var59; +RET_LABEL58:(void)0; +} +} +var_tc = var57; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var62 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var62 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var60 = var62; +RET_LABEL61:(void)0; +} +} +var63 = NULL; +{ +var64 = model__MType__is_subtype(var_tc, var60, var63, var_mtype); +} +var65 = !var64; +if (var65){ +goto BREAK_label; } else { -var228 = var_rt223->type->type_table[cltype229] == idtype230; } -if (!var228) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/rapid_type_analysis.nit", 199); -exit(1); +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var68 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var68 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); } -var231 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_cast_types]))(self) /* live_cast_types on */; -((void (*)(val*, val*))(var231->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var231, var_rt223) /* add on */; -CONTINUE_label220: (void)0; -((void (*)(val*))(var213->class->vft[COLOR_abstract_collection__Iterator__next]))(var213) /* next on */; +var66 = var68; +RET_LABEL67:(void)0; } -BREAK_label220: (void)0; -CONTINUE_label232: (void)0; -((void (*)(val*))(var208->class->vft[COLOR_abstract_collection__Iterator__next]))(var208) /* next on */; } -BREAK_label232: (void)0; -RET_LABEL:; +{ +var69 = model__MProperty__lookup_first_definition(var_mproperty, var66, var_tc); } -/* method rapid_type_analysis#RapidTypeAnalysis#run_analysis for (self: Object) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__run_analysis(val* self) { -rapid_type_analysis__RapidTypeAnalysis__run_analysis(self); -RET_LABEL:; +var_d = var69; +{ +array__ArraySet__add(var_res, var_d); /* Direct call array#ArraySet#add on */ } -/* method rapid_type_analysis#RapidTypeAnalysis#check_depth for (self: RapidTypeAnalysis, MClassType) */ -void rapid_type_analysis__RapidTypeAnalysis__check_depth(val* self, val* p0) { -val* var_mtype /* var mtype: MClassType */; -long var /* : Int */; -long var_d /* var d: Int */; -long var1 /* : Int */; -short int var2 /* : Bool */; -short int var4 /* : Bool */; -int cltype; -int idtype; +BREAK_label: (void)0; +{ +((void (*)(val*))(var_51->class->vft[COLOR_abstract_collection__Iterator__next]))(var_51) /* next on */; +} +} else { +goto BREAK_label70; +} +} +BREAK_label70: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_51) on */ +RET_LABEL71:(void)0; +} +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#live_targets for (self: Object, CallSite): Set[MMethodDef] */ +val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_targets(val* self, val* p0) { +val* var /* : Set[MMethodDef] */; +val* var1 /* : Set[MMethodDef] */; +var1 = rapid_type_analysis__RapidTypeAnalysis__live_targets(self, p0); +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#live_super_sends for (self: RapidTypeAnalysis): HashSet[MMethodDef] */ +val* rapid_type_analysis__RapidTypeAnalysis__live_super_sends(val* self) { +val* var /* : HashSet[MMethodDef] */; +val* var1 /* : HashSet[MMethodDef] */; +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 108); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#live_super_sends for (self: Object): HashSet[MMethodDef] */ +val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_super_sends(val* self) { +val* var /* : HashSet[MMethodDef] */; +val* var1 /* : HashSet[MMethodDef] */; +val* var3 /* : HashSet[MMethodDef] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 108); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */ +val* rapid_type_analysis__RapidTypeAnalysis__totry_methods(val* self) { +val* var /* : HashSet[MMethod] */; +val* var1 /* : HashSet[MMethod] */; +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 162); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods for (self: Object): HashSet[MMethod] */ +val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__totry_methods(val* self) { +val* var /* : HashSet[MMethod] */; +val* var1 /* : HashSet[MMethod] */; +val* var3 /* : HashSet[MMethod] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 162); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove for (self: RapidTypeAnalysis): Array[MMethod] */ +val* rapid_type_analysis__RapidTypeAnalysis__totry_methods_to_remove(val* self) { +val* var /* : Array[MMethod] */; +val* var1 /* : Array[MMethod] */; +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 165); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove for (self: Object): Array[MMethod] */ +val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__totry_methods_to_remove(val* self) { +val* var /* : Array[MMethod] */; +val* var1 /* : Array[MMethod] */; +val* var3 /* : Array[MMethod] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 165); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#try_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */ +val* rapid_type_analysis__RapidTypeAnalysis__try_methods(val* self) { +val* var /* : HashSet[MMethod] */; +val* var1 /* : HashSet[MMethod] */; +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 168); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#try_methods for (self: Object): HashSet[MMethod] */ +val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__try_methods(val* self) { +val* var /* : HashSet[MMethod] */; +val* var1 /* : HashSet[MMethod] */; +val* var3 /* : HashSet[MMethod] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#try_methods (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 168); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#todo for (self: RapidTypeAnalysis): List[MMethodDef] */ +val* rapid_type_analysis__RapidTypeAnalysis__todo(val* self) { +val* var /* : List[MMethodDef] */; +val* var1 /* : List[MMethodDef] */; +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 172); +show_backtrace(1); +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#todo for (self: Object): List[MMethodDef] */ +val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__todo(val* self) { +val* var /* : List[MMethodDef] */; +val* var1 /* : List[MMethodDef] */; +val* var3 /* : List[MMethodDef] */; +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 172); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +var = var1; +RET_LABEL:; +return var; +} +/* method rapid_type_analysis#RapidTypeAnalysis#force_alive for (self: RapidTypeAnalysis, String) */ +void rapid_type_analysis__RapidTypeAnalysis__force_alive(val* self, val* p0) { +val* var_classname /* var classname: String */; +val* var /* : ModelBuilder */; +val* var2 /* : ModelBuilder */; +val* var3 /* : Model */; +val* var5 /* : Model */; +val* var6 /* : nullable Array[MClass] */; +val* var_classes /* var classes: nullable Array[MClass] */; +val* var7 /* : null */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var11 /* : Bool */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +val* var_ /* var : Array[MClass] */; +val* var14 /* : ArrayIterator[nullable Object] */; +val* var_15 /* var : ArrayIterator[MClass] */; +short int var16 /* : Bool */; +val* var17 /* : nullable Object */; +val* var_c /* var c: MClass */; +val* var18 /* : MClassType */; +val* var20 /* : MClassType */; +val* var21 /* : MClassType */; +val* var23 /* : MClassType */; +var_classname = p0; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var2 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#model (var) on */ +var5 = var->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = model__Model__get_mclasses_by_name(var3, var_classname); +} +var_classes = var6; +var7 = NULL; +if (var_classes == NULL) { +var8 = 0; /* is null */ +} else { +var8 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_classes,var7) on */ +var_other = var7; +{ +var12 = ((short int (*)(val*, val*))(var_classes->class->vft[COLOR_kernel__Object___61d_61d]))(var_classes, var_other) /* == on */; +var11 = var12; +} +var13 = !var11; +var9 = var13; +goto RET_LABEL10; +RET_LABEL10:(void)0; +} +var8 = var9; +} +if (var8){ +var_ = var_classes; +{ +var14 = array__AbstractArrayRead__iterator(var_); +} +var_15 = var14; +for(;;) { +{ +var16 = array__ArrayIterator__is_ok(var_15); +} +if (var16){ +{ +var17 = array__ArrayIterator__item(var_15); +} +var_c = var17; +{ +{ /* Inline model#MClass#mclass_type (var_c) on */ +var20 = var_c->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +{ /* Inline model#MClass#mclass_type (var_c) on */ +var23 = var_c->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_new(self, var18, var21); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on */ +} +{ +array__ArrayIterator__next(var_15); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_15) on */ +RET_LABEL24:(void)0; +} +} +} else { +} +RET_LABEL:; +} +/* method rapid_type_analysis#RapidTypeAnalysis#force_alive for (self: Object, String) */ +void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__force_alive(val* self, val* p0) { +rapid_type_analysis__RapidTypeAnalysis__force_alive(self, p0); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on */ +RET_LABEL:; +} +/* method rapid_type_analysis#RapidTypeAnalysis#run_analysis for (self: RapidTypeAnalysis) */ +void rapid_type_analysis__RapidTypeAnalysis__run_analysis(val* self) { +val* var /* : MModule */; +val* var2 /* : MModule */; +val* var3 /* : nullable MClassType */; +val* var_maintype /* var maintype: nullable MClassType */; +val* var4 /* : null */; short int var5 /* : Bool */; -val* var6 /* : ModelBuilder */; -val* var7 /* : ToolContext */; -val* var8 /* : null */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var10 /* : Bool */; +val* var11 /* : MModule */; +val* var13 /* : MModule */; static val* varonce; -val* var9 /* : String */; -char* var10 /* : NativeString */; -long var11 /* : Int */; -val* var12 /* : String */; -static val* varonce13; val* var14 /* : String */; char* var15 /* : NativeString */; long var16 /* : Int */; -val* var17 /* : String */; -static val* varonce18; -val* var19 /* : String */; -char* var20 /* : NativeString */; -long var21 /* : Int */; -val* var22 /* : String */; -val* var23 /* : Array[Object] */; -long var24 /* : Int */; -val* var25 /* : NativeArray[Object] */; -val* var26 /* : Object */; -val* var27 /* : String */; +val* var17 /* : FlatString */; +val* var18 /* : MClass */; +val* var20 /* : MClass */; +val* var21 /* : nullable MMethod */; +val* var_initprop /* var initprop: nullable MMethod */; +val* var22 /* : null */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +val* var_other26 /* var other: nullable Object */; +short int var27 /* : Bool */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; +val* var30 /* : nullable MMethod */; +val* var31 /* : MModule */; +val* var33 /* : MModule */; +static val* varonce34; +val* var35 /* : String */; +char* var36 /* : NativeString */; +long var37 /* : Int */; +val* var38 /* : FlatString */; +val* var39 /* : MClass */; +val* var41 /* : MClass */; +val* var42 /* : nullable MMethod */; +val* var43 /* : MModule */; +val* var45 /* : MModule */; +static val* varonce46; +val* var47 /* : String */; +char* var48 /* : NativeString */; +long var49 /* : Int */; +val* var50 /* : FlatString */; +val* var51 /* : MClass */; +val* var53 /* : MClass */; +val* var54 /* : nullable MMethod */; +val* var_mainprop /* var mainprop: nullable MMethod */; +val* var55 /* : null */; +short int var56 /* : Bool */; +short int var57 /* : Bool */; +short int var59 /* : Bool */; +short int var60 /* : Bool */; +short int var61 /* : Bool */; +val* var62 /* : MModule */; +val* var64 /* : MModule */; +val* var65 /* : nullable MClassType */; +val* var_finalizable_type /* var finalizable_type: nullable MClassType */; +val* var66 /* : null */; +short int var67 /* : Bool */; +short int var68 /* : Bool */; +short int var70 /* : Bool */; +short int var71 /* : Bool */; +short int var72 /* : Bool */; +val* var73 /* : MModule */; +val* var75 /* : MModule */; +static val* varonce76; +val* var77 /* : String */; +char* var78 /* : NativeString */; +long var79 /* : Int */; +val* var80 /* : FlatString */; +val* var81 /* : MClass */; +val* var83 /* : MClass */; +val* var84 /* : nullable MMethod */; +val* var_finalize_meth /* var finalize_meth: nullable MMethod */; +val* var85 /* : null */; +short int var86 /* : Bool */; +short int var87 /* : Bool */; +short int var89 /* : Bool */; +short int var90 /* : Bool */; +short int var91 /* : Bool */; +static val* varonce92; +val* var93 /* : String */; +char* var94 /* : NativeString */; +long var95 /* : Int */; +val* var96 /* : FlatString */; +static val* varonce97; +val* var98 /* : String */; +char* var99 /* : NativeString */; +long var100 /* : Int */; +val* var101 /* : FlatString */; +static val* varonce102; +val* var103 /* : String */; +char* var104 /* : NativeString */; +long var105 /* : Int */; +val* var106 /* : FlatString */; +static val* varonce107; +val* var108 /* : String */; +char* var109 /* : NativeString */; +long var110 /* : Int */; +val* var111 /* : FlatString */; +static val* varonce112; +val* var113 /* : String */; +char* var114 /* : NativeString */; +long var115 /* : Int */; +val* var116 /* : FlatString */; +val* var117 /* : List[MMethodDef] */; +val* var119 /* : List[MMethodDef] */; +short int var120 /* : Bool */; +short int var121 /* : Bool */; +val* var122 /* : List[MMethodDef] */; +val* var124 /* : List[MMethodDef] */; +val* var125 /* : nullable Object */; +val* var_mmethoddef /* var mmethoddef: MMethodDef */; +val* var126 /* : MProperty */; +val* var128 /* : MProperty */; +val* var_mmeth /* var mmeth: MMethod */; +val* var129 /* : RapidTypeVisitor */; +val* var130 /* : MClassDef */; +val* var132 /* : MClassDef */; +val* var133 /* : MClassType */; +val* var135 /* : MClassType */; +val* var_v /* var v: RapidTypeVisitor */; +val* var136 /* : nullable MSignature */; +val* var138 /* : nullable MSignature */; +long var139 /* : Int */; +long var141 /* : Int */; +long var_vararg_rank /* var vararg_rank: Int */; +long var142 /* : Int */; +long var143 /* : Int */; +long var145 /* : Int */; +short int var146 /* : Bool */; +short int var148 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +short int var149 /* : Bool */; +val* var150 /* : ModelBuilder */; +val* var152 /* : ModelBuilder */; +val* var153 /* : HashMap[MPropDef, APropdef] */; +val* var155 /* : HashMap[MPropDef, APropdef] */; +val* var156 /* : nullable Object */; +val* var_node /* var node: APropdef */; +val* var157 /* : nullable MSignature */; +val* var159 /* : nullable MSignature */; +val* var160 /* : Array[MParameter] */; +val* var162 /* : Array[MParameter] */; +val* var163 /* : nullable Object */; +val* var164 /* : MType */; +val* var166 /* : MType */; +val* var_elttype /* var elttype: MType */; +val* var167 /* : MModule */; +val* var169 /* : MModule */; +static val* varonce170; +val* var171 /* : String */; +char* var172 /* : NativeString */; +long var173 /* : Int */; +val* var174 /* : FlatString */; +val* var175 /* : MClass */; +val* var176 /* : Array[MType] */; +long var177 /* : Int */; +val* var_ /* var : Array[MType] */; +val* var178 /* : MClassType */; +val* var_vararg /* var vararg: MClassType */; +val* var179 /* : MModule */; +val* var181 /* : MModule */; +static val* varonce182; +val* var183 /* : String */; +char* var184 /* : NativeString */; +long var185 /* : Int */; +val* var186 /* : FlatString */; +val* var187 /* : MClass */; +val* var188 /* : Array[MType] */; +long var189 /* : Int */; +val* var_190 /* var : Array[MType] */; +val* var191 /* : MClassType */; +val* var_native /* var native: MClassType */; +val* var192 /* : ModelBuilder */; +val* var194 /* : ModelBuilder */; +static val* varonce195; +val* var196 /* : String */; +char* var197 /* : NativeString */; +long var198 /* : Int */; +val* var199 /* : FlatString */; +val* var200 /* : MClass */; +val* var202 /* : MClass */; +val* var203 /* : MModule */; +val* var205 /* : MModule */; +val* var206 /* : MMethod */; +val* var207 /* : nullable MSignature */; +val* var209 /* : nullable MSignature */; +val* var_sig /* var sig: MSignature */; +val* var210 /* : MPropDef */; +val* var212 /* : MPropDef */; +val* var213 /* : nullable MSignature */; +val* var215 /* : nullable MSignature */; +val* var_osig /* var osig: MSignature */; +long var216 /* : Int */; +long var_i /* var i: Int */; +long var217 /* : Int */; +long var_218 /* var : Int */; +short int var219 /* : Bool */; +short int var221 /* : Bool */; +int cltype222; +int idtype223; +const char* var_class_name224; +short int var225 /* : Bool */; +val* var226 /* : Array[MParameter] */; +val* var228 /* : Array[MParameter] */; +val* var229 /* : nullable Object */; +val* var230 /* : MType */; +val* var232 /* : MType */; +val* var_origtype /* var origtype: MType */; +short int var233 /* : Bool */; +short int var234 /* : Bool */; +val* var235 /* : Array[MParameter] */; +val* var237 /* : Array[MParameter] */; +val* var238 /* : nullable Object */; +val* var239 /* : MType */; +val* var241 /* : MType */; +val* var_paramtype /* var paramtype: MType */; +long var242 /* : Int */; +long var243 /* : Int */; +val* var245 /* : ModelBuilder */; +val* var247 /* : ModelBuilder */; +val* var248 /* : HashMap[MPropDef, APropdef] */; +val* var250 /* : HashMap[MPropDef, APropdef] */; +short int var251 /* : Bool */; +short int var252 /* : Bool */; +short int var253 /* : Bool */; +short int var255 /* : Bool */; +val* var256 /* : ModelBuilder */; +val* var258 /* : ModelBuilder */; +val* var259 /* : HashMap[MClassDef, AClassdef] */; +val* var261 /* : HashMap[MClassDef, AClassdef] */; +val* var262 /* : MClassDef */; +val* var264 /* : MClassDef */; +val* var265 /* : nullable Object */; +val* var_nclassdef /* var nclassdef: AClassdef */; +val* var266 /* : nullable MMethodDef */; +val* var268 /* : nullable MMethodDef */; +short int var269 /* : Bool */; +short int var270 /* : Bool */; +short int var272 /* : Bool */; +short int var274 /* : Bool */; +short int var275 /* : Bool */; +val* var276 /* : MProperty */; +val* var278 /* : MProperty */; +short int var279 /* : Bool */; +short int var281 /* : Bool */; +short int var_282 /* var : Bool */; +short int var283 /* : Bool */; +short int var284 /* : Bool */; +val* var285 /* : MClassType */; +val* var287 /* : MClassType */; +val* var288 /* : nullable Object */; +val* var290 /* : nullable Object */; +val* var291 /* : null */; +short int var292 /* : Bool */; +short int var293 /* : Bool */; +val* var294 /* : nullable MSignature */; +val* var296 /* : nullable MSignature */; +val* var297 /* : nullable MType */; +val* var299 /* : nullable MType */; +short int var300 /* : Bool */; +int cltype301; +int idtype302; +const char* var_class_name303; +val* var305 /* : ModelBuilder */; +val* var307 /* : ModelBuilder */; +val* var308 /* : HashMap[MPropDef, APropdef] */; +val* var310 /* : HashMap[MPropDef, APropdef] */; +val* var311 /* : nullable Object */; +val* var_npropdef /* var npropdef: APropdef */; +short int var312 /* : Bool */; +int cltype313; +int idtype314; +val* var315 /* : nullable Array[CallSite] */; +val* var317 /* : nullable Array[CallSite] */; +val* var_auto_super_inits /* var auto_super_inits: nullable Array[CallSite] */; +val* var318 /* : null */; +short int var319 /* : Bool */; +short int var320 /* : Bool */; +short int var322 /* : Bool */; +short int var323 /* : Bool */; +short int var324 /* : Bool */; +val* var_325 /* var : Array[CallSite] */; +val* var326 /* : ArrayIterator[nullable Object] */; +val* var_327 /* var : ArrayIterator[CallSite] */; +short int var328 /* : Bool */; +val* var329 /* : nullable Object */; +val* var_auto_super_init /* var auto_super_init: CallSite */; +short int var332 /* : Bool */; +short int var334 /* : Bool */; +val* var335 /* : MClassType */; +val* var337 /* : MClassType */; +short int var338 /* : Bool */; +short int var339 /* : Bool */; +short int var341 /* : Bool */; +short int var_342 /* var : Bool */; +short int var343 /* : Bool */; +short int var345 /* : Bool */; +val* var346 /* : nullable MSignature */; +val* var348 /* : nullable MSignature */; +val* var349 /* : nullable MType */; +val* var351 /* : nullable MType */; +val* var_ret /* var ret: nullable MType */; +short int var352 /* : Bool */; +short int var353 /* : Bool */; +short int var354 /* : Bool */; +val* var355 /* : null */; +short int var356 /* : Bool */; +short int var357 /* : Bool */; +short int var359 /* : Bool */; +short int var360 /* : Bool */; +short int var361 /* : Bool */; +short int var_362 /* var : Bool */; +short int var363 /* : Bool */; +int cltype364; +int idtype365; +short int var_366 /* var : Bool */; +val* var367 /* : MClass */; +val* var369 /* : MClass */; +val* var370 /* : MClassKind */; +val* var372 /* : MClassKind */; +val* var373 /* : MClassKind */; +short int var374 /* : Bool */; +short int var375 /* : Bool */; +short int var377 /* : Bool */; +short int var378 /* : Bool */; +short int var379 /* : Bool */; +short int var_380 /* var : Bool */; +val* var381 /* : MClass */; +val* var383 /* : MClass */; +val* var384 /* : MClassKind */; +val* var386 /* : MClassKind */; +val* var387 /* : MClassKind */; +short int var388 /* : Bool */; +short int var389 /* : Bool */; +short int var391 /* : Bool */; +short int var392 /* : Bool */; +short int var393 /* : Bool */; +val* var395 /* : List[MClassType] */; +val* var_todo_types /* var todo_types: List[MClassType] */; +val* var396 /* : HashSet[MClassType] */; +val* var398 /* : HashSet[MClassType] */; +short int var399 /* : Bool */; +short int var400 /* : Bool */; +val* var401 /* : nullable Object */; +val* var_t /* var t: MClassType */; +val* var402 /* : HashSet[MClassType] */; +val* var404 /* : HashSet[MClassType] */; +val* var_405 /* var : HashSet[MClassType] */; +val* var406 /* : Iterator[Object] */; +val* var_407 /* var : Iterator[MClassType] */; +short int var408 /* : Bool */; +val* var409 /* : nullable Object */; +val* var_ot /* var ot: MClassType */; +val* var410 /* : MModule */; +val* var412 /* : MModule */; +short int var413 /* : Bool */; +short int var414 /* : Bool */; +val* var416 /* : MModule */; +val* var418 /* : MModule */; +val* var419 /* : MClassType */; +val* var_rt /* var rt: MClassType */; +val* var420 /* : HashSet[MClassType] */; +val* var422 /* : HashSet[MClassType] */; +short int var423 /* : Bool */; +val* var424 /* : HashSet[MClassType] */; +val* var426 /* : HashSet[MClassType] */; +val* var430 /* : HashSet[MType] */; +val* var432 /* : HashSet[MType] */; +val* var_433 /* var : HashSet[MType] */; +val* var434 /* : Iterator[Object] */; +val* var_435 /* var : Iterator[MType] */; +short int var436 /* : Bool */; +val* var437 /* : nullable Object */; +val* var_ot438 /* var ot: MType */; +val* var439 /* : HashSet[MClassType] */; +val* var441 /* : HashSet[MClassType] */; +val* var_442 /* var : HashSet[MClassType] */; +val* var443 /* : Iterator[Object] */; +val* var_444 /* var : Iterator[MClassType] */; +short int var445 /* : Bool */; +val* var446 /* : nullable Object */; +val* var_t447 /* var t: MClassType */; +val* var448 /* : MModule */; +val* var450 /* : MModule */; +short int var451 /* : Bool */; +short int var452 /* : Bool */; +val* var454 /* : MModule */; +val* var456 /* : MModule */; +val* var457 /* : MType */; +val* var_rt458 /* var rt: MType */; +val* var459 /* : HashSet[MType] */; +val* var461 /* : HashSet[MType] */; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var2 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = model__MModule__sys_type(var); +} +var_maintype = var3; +var4 = NULL; +if (var_maintype == NULL) { +var5 = 1; /* is null */ +} else { +var5 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_maintype,var4) on */ +var_other = var4; +{ +{ /* Inline kernel#Object#is_same_instance (var_maintype,var_other) on */ +var10 = var_maintype == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; +} +} +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ +goto RET_LABEL; +} else { +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_new(self, var_maintype, var_maintype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var13 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +if (varonce) { +var14 = varonce; +} else { +var15 = "init"; +var16 = 4; +var17 = string__NativeString__to_s_with_length(var15, var16); +var14 = var17; +varonce = var14; +} +{ +{ /* Inline model#MClassType#mclass (var_maintype) on */ +var20 = var_maintype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +var21 = model__MModule__try_get_primitive_method(var11, var14, var18); +} +var_initprop = var21; +var22 = NULL; +if (var_initprop == NULL) { +var23 = 0; /* is null */ +} else { +var23 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_initprop,var22) on */ +var_other26 = var22; +{ +var28 = ((short int (*)(val*, val*))(var_initprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_initprop, var_other26) /* == on */; +var27 = var28; +} +var29 = !var27; +var24 = var29; +goto RET_LABEL25; +RET_LABEL25:(void)0; +} +var23 = var24; +} +if (var23){ +{ +rapid_type_analysis__RapidTypeAnalysis__add_send(self, var_maintype, var_initprop); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on */ +} +} else { +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var33 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var33 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var31 = var33; +RET_LABEL32:(void)0; +} +} +if (varonce34) { +var35 = varonce34; +} else { +var36 = "run"; +var37 = 3; +var38 = string__NativeString__to_s_with_length(var36, var37); +var35 = var38; +varonce34 = var35; +} +{ +{ /* Inline model#MClassType#mclass (var_maintype) on */ +var41 = var_maintype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var41 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var39 = var41; +RET_LABEL40:(void)0; +} +} +{ +var42 = model__MModule__try_get_primitive_method(var31, var35, var39); +} +if (var42!=NULL) { +var30 = var42; +} else { +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var45 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var45 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var43 = var45; +RET_LABEL44:(void)0; +} +} +if (varonce46) { +var47 = varonce46; +} else { +var48 = "main"; +var49 = 4; +var50 = string__NativeString__to_s_with_length(var48, var49); +var47 = var50; +varonce46 = var47; +} +{ +{ /* Inline model#MClassType#mclass (var_maintype) on */ +var53 = var_maintype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var53 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var51 = var53; +RET_LABEL52:(void)0; +} +} +{ +var54 = model__MModule__try_get_primitive_method(var43, var47, var51); +} +var30 = var54; +} +var_mainprop = var30; +var55 = NULL; +if (var_mainprop == NULL) { +var56 = 0; /* is null */ +} else { +var56 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_mainprop,var55) on */ +var_other26 = var55; +{ +var60 = ((short int (*)(val*, val*))(var_mainprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_mainprop, var_other26) /* == on */; +var59 = var60; +} +var61 = !var59; +var57 = var61; +goto RET_LABEL58; +RET_LABEL58:(void)0; +} +var56 = var57; +} +if (var56){ +{ +rapid_type_analysis__RapidTypeAnalysis__add_send(self, var_maintype, var_mainprop); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on */ +} +} else { +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var64 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var64 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var62 = var64; +RET_LABEL63:(void)0; +} +} +{ +var65 = model__MModule__finalizable_type(var62); +} +var_finalizable_type = var65; +var66 = NULL; +if (var_finalizable_type == NULL) { +var67 = 0; /* is null */ +} else { +var67 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_finalizable_type,var66) on */ +var_other26 = var66; +{ +var71 = ((short int (*)(val*, val*))(var_finalizable_type->class->vft[COLOR_kernel__Object___61d_61d]))(var_finalizable_type, var_other26) /* == on */; +var70 = var71; +} +var72 = !var70; +var68 = var72; +goto RET_LABEL69; +RET_LABEL69:(void)0; +} +var67 = var68; +} +if (var67){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var75 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var75 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var73 = var75; +RET_LABEL74:(void)0; +} +} +if (varonce76) { +var77 = varonce76; +} else { +var78 = "finalize"; +var79 = 8; +var80 = string__NativeString__to_s_with_length(var78, var79); +var77 = var80; +varonce76 = var77; +} +{ +{ /* Inline model#MClassType#mclass (var_finalizable_type) on */ +var83 = var_finalizable_type->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var83 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var81 = var83; +RET_LABEL82:(void)0; +} +} +{ +var84 = model__MModule__try_get_primitive_method(var73, var77, var81); +} +var_finalize_meth = var84; +var85 = NULL; +if (var_finalize_meth == NULL) { +var86 = 0; /* is null */ +} else { +var86 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_finalize_meth,var85) on */ +var_other26 = var85; +{ +var90 = ((short int (*)(val*, val*))(var_finalize_meth->class->vft[COLOR_kernel__Object___61d_61d]))(var_finalize_meth, var_other26) /* == on */; +var89 = var90; +} +var91 = !var89; +var87 = var91; +goto RET_LABEL88; +RET_LABEL88:(void)0; +} +var86 = var87; +} +if (var86){ +{ +rapid_type_analysis__RapidTypeAnalysis__add_send(self, var_finalizable_type, var_finalize_meth); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on */ +} +} else { +} +} else { +} +if (varonce92) { +var93 = varonce92; +} else { +var94 = "Bool"; +var95 = 4; +var96 = string__NativeString__to_s_with_length(var94, var95); +var93 = var96; +varonce92 = var93; +} +{ +rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var93); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on */ +} +if (varonce97) { +var98 = varonce97; +} else { +var99 = "Int"; +var100 = 3; +var101 = string__NativeString__to_s_with_length(var99, var100); +var98 = var101; +varonce97 = var98; +} +{ +rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var98); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on */ +} +if (varonce102) { +var103 = varonce102; +} else { +var104 = "Float"; +var105 = 5; +var106 = string__NativeString__to_s_with_length(var104, var105); +var103 = var106; +varonce102 = var103; +} +{ +rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var103); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on */ +} +if (varonce107) { +var108 = varonce107; +} else { +var109 = "Char"; +var110 = 4; +var111 = string__NativeString__to_s_with_length(var109, var110); +var108 = var111; +varonce107 = var108; +} +{ +rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var108); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on */ +} +if (varonce112) { +var113 = varonce112; +} else { +var114 = "Pointer"; +var115 = 7; +var116 = string__NativeString__to_s_with_length(var114, var115); +var113 = var116; +varonce112 = var113; +} +{ +rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var113); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on */ +} +for(;;) { +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on */ +var119 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on */ +if (unlikely(var119 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 172); +show_backtrace(1); +} +var117 = var119; +RET_LABEL118:(void)0; +} +} +{ +var120 = list__List__is_empty(var117); +} +var121 = !var120; +if (var121){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on */ +var124 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on */ +if (unlikely(var124 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 172); +show_backtrace(1); +} +var122 = var124; +RET_LABEL123:(void)0; +} +} +{ +var125 = list__List__shift(var122); +} +var_mmethoddef = var125; +{ +{ /* Inline model#MPropDef#mproperty (var_mmethoddef) on */ +var128 = var_mmethoddef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var128 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898); +show_backtrace(1); +} +var126 = var128; +RET_LABEL127:(void)0; +} +} +var_mmeth = var126; +var129 = NEW_rapid_type_analysis__RapidTypeVisitor(&type_rapid_type_analysis__RapidTypeVisitor); +{ +{ /* Inline model#MPropDef#mclassdef (var_mmethoddef) on */ +var132 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var132 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var130 = var132; +RET_LABEL131:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var130) on */ +var135 = var130->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var135 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var133 = var135; +RET_LABEL134:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__init(var129, self, var133, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeVisitor#init on */ +} +var_v = var129; +{ +{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on */ +var138 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var136 = var138; +RET_LABEL137:(void)0; +} +} +if (var136 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 216); +show_backtrace(1); +} else { +{ /* Inline model#MSignature#vararg_rank (var136) on */ +if (unlikely(var136 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1510); +show_backtrace(1); +} +var141 = var136->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on */ +var139 = var141; +RET_LABEL140:(void)0; +} +} +var_vararg_rank = var139; +var142 = 1; +{ +{ /* Inline kernel#Int#unary - (var142) on */ +var145 = -var142; +var143 = var145; +goto RET_LABEL144; +RET_LABEL144:(void)0; +} +} +{ +{ /* Inline kernel#Int#> (var_vararg_rank,var143) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var148 = 1; /* easy isa OTHER*/ +if (unlikely(!var148)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); +show_backtrace(1); +} +var149 = var_vararg_rank > var143; +var146 = var149; +goto RET_LABEL147; +RET_LABEL147:(void)0; +} +} +if (var146){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var152 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var152 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var150 = var152; +RET_LABEL151:(void)0; +} +} +{ +{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var150) on */ +var155 = var150->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on */ +if (unlikely(var155 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef"); +PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39); +show_backtrace(1); +} +var153 = var155; +RET_LABEL154:(void)0; +} +} +{ +var156 = hash_collection__HashMap___91d_93d(var153, var_mmethoddef); +} +var_node = var156; +{ +{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on */ +var159 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var157 = var159; +RET_LABEL158:(void)0; +} +} +if (var157 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 219); +show_backtrace(1); +} else { +{ /* Inline model#MSignature#mparameters (var157) on */ +if (unlikely(var157 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465); +show_backtrace(1); +} +var162 = var157->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on */ +if (unlikely(var162 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465); +show_backtrace(1); +} +var160 = var162; +RET_LABEL161:(void)0; +} +} +{ +var163 = array__Array___91d_93d(var160, var_vararg_rank); +} +{ +{ /* Inline model#MParameter#mtype (var163) on */ +var166 = var163->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on */ +if (unlikely(var166 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565); +show_backtrace(1); +} +var164 = var166; +RET_LABEL165:(void)0; +} +} +var_elttype = var164; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var169 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var169 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var167 = var169; +RET_LABEL168:(void)0; +} +} +if (varonce170) { +var171 = varonce170; +} else { +var172 = "Array"; +var173 = 5; +var174 = string__NativeString__to_s_with_length(var172, var173); +var171 = var174; +varonce170 = var171; +} +{ +var175 = model__MModule__get_primitive_class(var167, var171); +} +var176 = NEW_array__Array(&type_array__Arraymodel__MType); +var177 = 1; +{ +array__Array__with_capacity(var176, var177); /* Direct call array#Array#with_capacity on */ +} +var_ = var176; +{ +array__AbstractArray__push(var_, var_elttype); /* Direct call array#AbstractArray#push on */ +} +{ +var178 = model__MClass__get_mtype(var175, var_); +} +var_vararg = var178; +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_vararg); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var181 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var181 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var179 = var181; +RET_LABEL180:(void)0; +} +} +if (varonce182) { +var183 = varonce182; +} else { +var184 = "NativeArray"; +var185 = 11; +var186 = string__NativeString__to_s_with_length(var184, var185); +var183 = var186; +varonce182 = var183; +} +{ +var187 = model__MModule__get_primitive_class(var179, var183); +} +var188 = NEW_array__Array(&type_array__Arraymodel__MType); +var189 = 1; +{ +array__Array__with_capacity(var188, var189); /* Direct call array#Array#with_capacity on */ +} +var_190 = var188; +{ +array__AbstractArray__push(var_190, var_elttype); /* Direct call array#AbstractArray#push on */ +} +{ +var191 = model__MClass__get_mtype(var187, var_190); +} +var_native = var191; +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var194 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var194 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var192 = var194; +RET_LABEL193:(void)0; +} +} +if (varonce195) { +var196 = varonce195; +} else { +var197 = "with_native"; +var198 = 11; +var199 = string__NativeString__to_s_with_length(var197, var198); +var196 = var199; +varonce195 = var196; +} +{ +{ /* Inline model#MClassType#mclass (var_vararg) on */ +var202 = var_vararg->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var202 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var200 = var202; +RET_LABEL201:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var205 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var205 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var203 = var205; +RET_LABEL204:(void)0; +} +} +{ +var206 = modelbuilder__ModelBuilder__force_get_primitive_method(var192, var_node, var196, var200, var203); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(var_v, var_vararg, var206); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on */ +} +} else { +} +{ +{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on */ +var209 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var207 = var209; +RET_LABEL208:(void)0; +} +} +if (unlikely(var207 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 229); +show_backtrace(1); +} +var_sig = var207; +{ +{ /* Inline model#MProperty#intro (var_mmeth) on */ +var212 = var_mmeth->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var212 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var210 = var212; +RET_LABEL211:(void)0; +} +} +{ +{ /* Inline model#MMethodDef#msignature (var210) on */ +var215 = var210->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var213 = var215; +RET_LABEL214:(void)0; +} +} +if (unlikely(var213 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 230); +show_backtrace(1); +} +var_osig = var213; +var216 = 0; +var_i = var216; +{ +var217 = model__MSignature__arity(var_sig); +} +var_218 = var217; +for(;;) { +{ +{ /* Inline kernel#Int#< (var_i,var_218) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var221 = 1; /* easy isa OTHER*/ +if (unlikely(!var221)) { +var_class_name224 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name224); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371); +show_backtrace(1); +} +var225 = var_i < var_218; +var219 = var225; +goto RET_LABEL220; +RET_LABEL220:(void)0; +} +} +if (var219){ +{ +{ /* Inline model#MSignature#mparameters (var_osig) on */ +var228 = var_osig->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on */ +if (unlikely(var228 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465); +show_backtrace(1); +} +var226 = var228; +RET_LABEL227:(void)0; +} +} +{ +var229 = array__Array___91d_93d(var226, var_i); +} +{ +{ /* Inline model#MParameter#mtype (var229) on */ +var232 = var229->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on */ +if (unlikely(var232 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565); +show_backtrace(1); +} +var230 = var232; +RET_LABEL231:(void)0; +} +} +var_origtype = var230; +{ +var233 = ((short int (*)(val*))(var_origtype->class->vft[COLOR_model__MType__need_anchor]))(var_origtype) /* need_anchor on */; +} +var234 = !var233; +if (var234){ +goto BREAK_label; +} else { +} +{ +{ /* Inline model#MSignature#mparameters (var_sig) on */ +var237 = var_sig->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on */ +if (unlikely(var237 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465); +show_backtrace(1); +} +var235 = var237; +RET_LABEL236:(void)0; +} +} +{ +var238 = array__Array___91d_93d(var235, var_i); +} +{ +{ /* Inline model#MParameter#mtype (var238) on */ +var241 = var238->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on */ +if (unlikely(var241 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565); +show_backtrace(1); +} +var239 = var241; +RET_LABEL240:(void)0; +} +} +var_paramtype = var239; +{ +rapid_type_analysis__RapidTypeAnalysis__add_cast(self, var_paramtype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_cast on */ +} +BREAK_label: (void)0; +var242 = 1; +{ +var243 = kernel__Int__successor(var_i, var242); +} +var_i = var243; +} else { +goto BREAK_label244; +} +} +BREAK_label244: (void)0; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var247 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var247 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var245 = var247; +RET_LABEL246:(void)0; +} +} +{ +{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var245) on */ +var250 = var245->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on */ +if (unlikely(var250 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef"); +PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39); +show_backtrace(1); +} +var248 = var250; +RET_LABEL249:(void)0; +} +} +{ +var251 = abstract_collection__MapRead__has_key(var248, var_mmethoddef); +} +var252 = !var251; +if (var252){ +{ +{ /* Inline model#MMethod#is_root_init (var_mmeth) on */ +var255 = var_mmeth->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on */ +var253 = var255; +RET_LABEL254:(void)0; +} +} +if (var253){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var258 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var258 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var256 = var258; +RET_LABEL257:(void)0; +} +} +{ +{ /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (var256) on */ +var261 = var256->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on */ +if (unlikely(var261 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef"); +PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_class.nit", 410); +show_backtrace(1); +} +var259 = var261; +RET_LABEL260:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var_mmethoddef) on */ +var264 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var264 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var262 = var264; +RET_LABEL263:(void)0; +} +} +{ +var265 = hash_collection__HashMap___91d_93d(var259, var262); +} +var_nclassdef = var265; +{ +{ /* Inline modelize_property#AClassdef#mfree_init (var_nclassdef) on */ +var268 = var_nclassdef->attrs[COLOR_modelize_property__AClassdef___mfree_init].val; /* _mfree_init on */ +var266 = var268; +RET_LABEL267:(void)0; +} +} +{ +{ /* Inline kernel#Object#== (var_mmethoddef,var266) on */ +var_other = var266; +{ +{ /* Inline kernel#Object#is_same_instance (var_mmethoddef,var_other) on */ +var274 = var_mmethoddef == var_other; +var272 = var274; +goto RET_LABEL273; +RET_LABEL273:(void)0; +} +} +var270 = var272; +goto RET_LABEL271; +RET_LABEL271:(void)0; +} +var269 = var270; +} +if (unlikely(!var269)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 242); +show_backtrace(1); +} +{ +{ /* Inline model#MPropDef#mproperty (var_mmethoddef) on */ +var278 = var_mmethoddef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var278 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898); +show_backtrace(1); +} +var276 = var278; +RET_LABEL277:(void)0; +} +} +{ +{ /* Inline model#MMethod#is_root_init (var276) on */ +var281 = var276->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on */ +var279 = var281; +RET_LABEL280:(void)0; +} +} +var_282 = var279; +if (var279){ +{ +var283 = model__MPropDef__is_intro(var_mmethoddef); +} +var284 = !var283; +var275 = var284; +} else { +var275 = var_282; +} +if (var275){ +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on */ +var287 = var_v->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on */ +if (unlikely(var287 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441); +show_backtrace(1); +} +var285 = var287; +RET_LABEL286:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_super_send(self, var285, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on */ +} +} else { +} +} else { +{ +{ /* Inline model#MMethodDef#constant_value (var_mmethoddef) on */ +var290 = var_mmethoddef->attrs[COLOR_model__MMethodDef___constant_value].val; /* _constant_value on */ +var288 = var290; +RET_LABEL289:(void)0; +} +} +var291 = NULL; +if (var288 == NULL) { +var292 = 0; /* is null */ +} else { +var292 = 1; /* arg is null and recv is not */ +} +if (0) { +var293 = ((short int (*)(val*, val*))(var288->class->vft[COLOR_kernel__Object___33d_61d]))(var288, var291) /* != on */; +var292 = var293; +} +if (var292){ +{ +{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on */ +var296 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var294 = var296; +RET_LABEL295:(void)0; +} +} +if (var294 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 249); +show_backtrace(1); +} else { +{ /* Inline model#MSignature#return_mtype (var294) on */ +if (unlikely(var294 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468); +show_backtrace(1); +} +var299 = var294->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on */ +var297 = var299; +RET_LABEL298:(void)0; +} +} +/* isa MClassType */ +cltype301 = type_model__MClassType.color; +idtype302 = type_model__MClassType.id; +if(var297 == NULL) { +var300 = 0; +} else { +if(cltype301 >= var297->type->table_size) { +var300 = 0; +} else { +var300 = var297->type->type_table[cltype301] == idtype302; +} +} +if (unlikely(!var300)) { +var_class_name303 = var297 == NULL ? "null" : var297->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name303); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 249); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var297); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +} else { +PRINT_ERROR("Runtime error: %s", "Aborted"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 251); +show_backtrace(1); +} +} +goto BREAK_label304; +} else { +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var307 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var307 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var305 = var307; +RET_LABEL306:(void)0; +} +} +{ +{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var305) on */ +var310 = var305->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on */ +if (unlikely(var310 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef"); +PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39); +show_backtrace(1); +} +var308 = var310; +RET_LABEL309:(void)0; +} +} +{ +var311 = hash_collection__HashMap___91d_93d(var308, var_mmethoddef); +} +var_npropdef = var311; +/* isa AMethPropdef */ +cltype313 = type_parser_nodes__AMethPropdef.color; +idtype314 = type_parser_nodes__AMethPropdef.id; +if(cltype313 >= var_npropdef->type->table_size) { +var312 = 0; +} else { +var312 = var_npropdef->type->type_table[cltype313] == idtype314; +} +if (var312){ +{ +{ /* Inline auto_super_init#AMethPropdef#auto_super_inits (var_npropdef) on */ +var317 = var_npropdef->attrs[COLOR_auto_super_init__AMethPropdef___auto_super_inits].val; /* _auto_super_inits on */ +var315 = var317; +RET_LABEL316:(void)0; +} +} +var_auto_super_inits = var315; +var318 = NULL; +if (var_auto_super_inits == NULL) { +var319 = 0; /* is null */ +} else { +var319 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_auto_super_inits,var318) on */ +var_other26 = var318; +{ +var323 = ((short int (*)(val*, val*))(var_auto_super_inits->class->vft[COLOR_kernel__Object___61d_61d]))(var_auto_super_inits, var_other26) /* == on */; +var322 = var323; +} +var324 = !var322; +var320 = var324; +goto RET_LABEL321; +RET_LABEL321:(void)0; +} +var319 = var320; +} +if (var319){ +var_325 = var_auto_super_inits; +{ +var326 = array__AbstractArrayRead__iterator(var_325); +} +var_327 = var326; +for(;;) { +{ +var328 = array__ArrayIterator__is_ok(var_327); +} +if (var328){ +{ +var329 = array__ArrayIterator__item(var_327); +} +var_auto_super_init = var329; +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var_auto_super_init); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ +} +{ +array__ArrayIterator__next(var_327); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label330; +} +} +BREAK_label330: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_327) on */ +RET_LABEL331:(void)0; +} +} +} else { +} +{ +{ /* Inline auto_super_init#AMethPropdef#auto_super_call (var_npropdef) on */ +var334 = var_npropdef->attrs[COLOR_auto_super_init__AMethPropdef___auto_super_call].s; /* _auto_super_call on */ +var332 = var334; +RET_LABEL333:(void)0; +} +} +if (var332){ +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on */ +var337 = var_v->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on */ +if (unlikely(var337 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441); +show_backtrace(1); +} +var335 = var337; +RET_LABEL336:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_super_send(self, var335, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on */ +} +} else { +} +} else { +} +{ +{ /* Inline model#MMethodDef#is_intern (var_mmethoddef) on */ +var341 = var_mmethoddef->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on */ +var339 = var341; +RET_LABEL340:(void)0; +} +} +var_342 = var339; +if (var339){ +var338 = var_342; +} else { +{ +{ /* Inline model#MMethodDef#is_extern (var_mmethoddef) on */ +var345 = var_mmethoddef->attrs[COLOR_model__MMethodDef___is_extern].s; /* _is_extern on */ +var343 = var345; +RET_LABEL344:(void)0; +} +} +var338 = var343; +} +if (var338){ +{ +{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on */ +var348 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var346 = var348; +RET_LABEL347:(void)0; +} +} +if (var346 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 272); +show_backtrace(1); +} else { +{ /* Inline model#MSignature#return_mtype (var346) on */ +if (unlikely(var346 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468); +show_backtrace(1); +} +var351 = var346->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on */ +var349 = var351; +RET_LABEL350:(void)0; +} +} +var_ret = var349; +var355 = NULL; +if (var_ret == NULL) { +var356 = 0; /* is null */ +} else { +var356 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_ret,var355) on */ +var_other26 = var355; +{ +var360 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other26) /* == on */; +var359 = var360; +} +var361 = !var359; +var357 = var361; +goto RET_LABEL358; +RET_LABEL358:(void)0; +} +var356 = var357; +} +var_362 = var356; +if (var356){ +/* isa MClassType */ +cltype364 = type_model__MClassType.color; +idtype365 = type_model__MClassType.id; +if(cltype364 >= var_ret->type->table_size) { +var363 = 0; +} else { +var363 = var_ret->type->type_table[cltype364] == idtype365; +} +var354 = var363; +} else { +var354 = var_362; +} +var_366 = var354; +if (var354){ +{ +{ /* Inline model#MClassType#mclass (var_ret) on */ +var369 = var_ret->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var369 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var367 = var369; +RET_LABEL368:(void)0; +} +} +{ +{ /* Inline model#MClass#kind (var367) on */ +var372 = var367->attrs[COLOR_model__MClass___kind].val; /* _kind on */ +if (unlikely(var372 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371); +show_backtrace(1); +} +var370 = var372; +RET_LABEL371:(void)0; +} +} +{ +var373 = model__Object__abstract_kind(self); +} +{ +{ /* Inline kernel#Object#!= (var370,var373) on */ +var_other26 = var373; +{ +var378 = ((short int (*)(val*, val*))(var370->class->vft[COLOR_kernel__Object___61d_61d]))(var370, var_other26) /* == on */; +var377 = var378; +} +var379 = !var377; +var375 = var379; +goto RET_LABEL376; +RET_LABEL376:(void)0; +} +var374 = var375; +} +var353 = var374; +} else { +var353 = var_366; +} +var_380 = var353; +if (var353){ +{ +{ /* Inline model#MClassType#mclass (var_ret) on */ +var383 = var_ret->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var383 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var381 = var383; +RET_LABEL382:(void)0; +} +} +{ +{ /* Inline model#MClass#kind (var381) on */ +var386 = var381->attrs[COLOR_model__MClass___kind].val; /* _kind on */ +if (unlikely(var386 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371); +show_backtrace(1); +} +var384 = var386; +RET_LABEL385:(void)0; +} +} +{ +var387 = model__Object__interface_kind(self); +} +{ +{ /* Inline kernel#Object#!= (var384,var387) on */ +var_other26 = var387; +{ +var392 = ((short int (*)(val*, val*))(var384->class->vft[COLOR_kernel__Object___61d_61d]))(var384, var_other26) /* == on */; +var391 = var392; +} +var393 = !var391; +var389 = var393; +goto RET_LABEL390; +RET_LABEL390:(void)0; +} +var388 = var389; +} +var352 = var388; +} else { +var352 = var_380; +} +if (var352){ +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_ret); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +} else { +} +} else { +} +{ +parser_nodes__Visitor__enter_visit(var_v, var_npropdef); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +} else { +goto BREAK_label394; +} +BREAK_label304: (void)0; +} +BREAK_label394: (void)0; +var395 = NEW_list__List(&type_list__Listmodel__MClassType); +{ +((void (*)(val*))(var395->class->vft[COLOR_kernel__Object__init]))(var395) /* init on */; +} +var_todo_types = var395; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on */ +var398 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var398 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); +} +var396 = var398; +RET_LABEL397:(void)0; +} +} +{ +abstract_collection__SimpleCollection__add_all(var_todo_types, var396); /* Direct call abstract_collection#SimpleCollection#add_all on */ +} +for(;;) { +{ +var399 = list__List__is_empty(var_todo_types); +} +var400 = !var399; +if (var400){ +{ +var401 = list__List__shift(var_todo_types); +} +var_t = var401; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on */ +var404 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on */ +if (unlikely(var404 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 58); +show_backtrace(1); +} +var402 = var404; +RET_LABEL403:(void)0; +} +} +var_405 = var402; +{ +var406 = hash_collection__HashSet__iterator(var_405); +} +var_407 = var406; +for(;;) { +{ +var408 = ((short int (*)(val*))(var_407->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_407) /* is_ok on */; +} +if (var408){ +{ +var409 = ((val* (*)(val*))(var_407->class->vft[COLOR_abstract_collection__Iterator__item]))(var_407) /* item on */; +} +var_ot = var409; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var412 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var412 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var410 = var412; +RET_LABEL411:(void)0; +} +} +{ +var413 = ((short int (*)(val*, val*, val*, val*))(var_ot->class->vft[COLOR_model__MType__can_resolve_for]))(var_ot, var_t, var_t, var410) /* can_resolve_for on */; +} +var414 = !var413; +if (var414){ +goto BREAK_label415; +} else { +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var418 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var418 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var416 = var418; +RET_LABEL417:(void)0; +} +} +{ +var419 = model__MClassType__anchor_to(var_ot, var416, var_t); +} +var_rt = var419; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on */ +var422 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var422 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); +} +var420 = var422; +RET_LABEL421:(void)0; +} +} +{ +var423 = hash_collection__HashSet__has(var420, var_rt); +} +if (var423){ +goto BREAK_label415; +} else { +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on */ +var426 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var426 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); +} +var424 = var426; +RET_LABEL425:(void)0; +} +} +{ +hash_collection__HashSet__add(var424, var_rt); /* Direct call hash_collection#HashSet#add on */ +} +{ +abstract_collection__Sequence__add(var_todo_types, var_rt); /* Direct call abstract_collection#Sequence#add on */ +} +{ +rapid_type_analysis__RapidTypeAnalysis__check_depth(self, var_rt); /* Direct call rapid_type_analysis#RapidTypeAnalysis#check_depth on */ +} +BREAK_label415: (void)0; +{ +((void (*)(val*))(var_407->class->vft[COLOR_abstract_collection__Iterator__next]))(var_407) /* next on */; +} +} else { +goto BREAK_label427; +} +} +BREAK_label427: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_407) on */ +RET_LABEL428:(void)0; +} +} +} else { +goto BREAK_label429; +} +} +BREAK_label429: (void)0; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on */ +var432 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on */ +if (unlikely(var432 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 68); +show_backtrace(1); +} +var430 = var432; +RET_LABEL431:(void)0; +} +} +var_433 = var430; +{ +var434 = hash_collection__HashSet__iterator(var_433); +} +var_435 = var434; +for(;;) { +{ +var436 = ((short int (*)(val*))(var_435->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_435) /* is_ok on */; +} +if (var436){ +{ +var437 = ((val* (*)(val*))(var_435->class->vft[COLOR_abstract_collection__Iterator__item]))(var_435) /* item on */; +} +var_ot438 = var437; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on */ +var441 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var441 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); +} +var439 = var441; +RET_LABEL440:(void)0; +} +} +var_442 = var439; +{ +var443 = hash_collection__HashSet__iterator(var_442); +} +var_444 = var443; +for(;;) { +{ +var445 = ((short int (*)(val*))(var_444->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_444) /* is_ok on */; +} +if (var445){ +{ +var446 = ((val* (*)(val*))(var_444->class->vft[COLOR_abstract_collection__Iterator__item]))(var_444) /* item on */; +} +var_t447 = var446; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var450 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var450 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var448 = var450; +RET_LABEL449:(void)0; +} +} +{ +var451 = ((short int (*)(val*, val*, val*, val*))(var_ot438->class->vft[COLOR_model__MType__can_resolve_for]))(var_ot438, var_t447, var_t447, var448) /* can_resolve_for on */; +} +var452 = !var451; +if (var452){ +goto BREAK_label453; +} else { +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var456 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var456 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var454 = var456; +RET_LABEL455:(void)0; +} +} +{ +var457 = ((val* (*)(val*, val*, val*))(var_ot438->class->vft[COLOR_model__MType__anchor_to]))(var_ot438, var454, var_t447) /* anchor_to on */; +} +var_rt458 = var457; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on */ +var461 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on */ +if (unlikely(var461 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 65); +show_backtrace(1); +} +var459 = var461; +RET_LABEL460:(void)0; +} +} +{ +hash_collection__HashSet__add(var459, var_rt458); /* Direct call hash_collection#HashSet#add on */ +} +BREAK_label453: (void)0; +{ +((void (*)(val*))(var_444->class->vft[COLOR_abstract_collection__Iterator__next]))(var_444) /* next on */; +} +} else { +goto BREAK_label462; +} +} +BREAK_label462: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_444) on */ +RET_LABEL463:(void)0; +} +} +{ +((void (*)(val*))(var_435->class->vft[COLOR_abstract_collection__Iterator__next]))(var_435) /* next on */; +} +} else { +goto BREAK_label464; +} +} +BREAK_label464: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_435) on */ +RET_LABEL465:(void)0; +} +} +RET_LABEL:; +} +/* method rapid_type_analysis#RapidTypeAnalysis#run_analysis for (self: Object) */ +void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__run_analysis(val* self) { +rapid_type_analysis__RapidTypeAnalysis__run_analysis(self); /* Direct call rapid_type_analysis#RapidTypeAnalysis#run_analysis on */ +RET_LABEL:; +} +/* method rapid_type_analysis#RapidTypeAnalysis#check_depth for (self: RapidTypeAnalysis, MClassType) */ +void rapid_type_analysis__RapidTypeAnalysis__check_depth(val* self, val* p0) { +val* var_mtype /* var mtype: MClassType */; +long var /* : Int */; +long var_d /* var d: Int */; +long var1 /* : Int */; +short int var2 /* : Bool */; +short int var4 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +short int var5 /* : Bool */; +val* var6 /* : ModelBuilder */; +val* var8 /* : ModelBuilder */; +val* var9 /* : ToolContext */; +val* var11 /* : ToolContext */; +val* var12 /* : null */; +static val* varonce; +val* var13 /* : String */; +char* var14 /* : NativeString */; +long var15 /* : Int */; +val* var16 /* : FlatString */; +static val* varonce17; +val* var18 /* : String */; +char* var19 /* : NativeString */; +long var20 /* : Int */; +val* var21 /* : FlatString */; +static val* varonce22; +val* var23 /* : String */; +char* var24 /* : NativeString */; +long var25 /* : Int */; +val* var26 /* : FlatString */; +val* var27 /* : Array[Object] */; +long var28 /* : Int */; +val* var29 /* : NativeArray[Object] */; +val* var30 /* : Object */; +val* var31 /* : String */; var_mtype = p0; +{ var = ((long (*)(val*))(var_mtype->class->vft[COLOR_model__MType__length]))(var_mtype) /* length on */; +} var_d = var; var1 = 255; -{ /* Inline kernel#Int#> (var_d,var1) */ +{ +{ /* Inline kernel#Int#> (var_d,var1) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var4 = 1; /* easy isa OTHER*/ -if (!var4) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259); -exit(1); +if (unlikely(!var4)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); +show_backtrace(1); } var5 = var_d > var1; var2 = var5; goto RET_LABEL3; RET_LABEL3:(void)0; } +} if (var2){ -var6 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -var7 = ((val* (*)(val*))(var6->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var6) /* toolcontext on */; -var8 = NULL; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var8 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var6) on */ +var11 = var6->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +var12 = NULL; if (varonce) { -var9 = varonce; +var13 = varonce; } else { -var10 = "Fatal error: limitation in the rapidtype analysis engine: a type depth of "; -var11 = 74; -var12 = string__NativeString__to_s_with_length(var10, var11); -var9 = var12; -varonce = var9; +var14 = "Fatal error: limitation in the rapidtype analysis engine: a type depth of "; +var15 = 74; +var16 = string__NativeString__to_s_with_length(var14, var15); +var13 = var16; +varonce = var13; } -if (varonce13) { -var14 = varonce13; +if (varonce17) { +var18 = varonce17; } else { -var15 = " is too important, the problematic type is "; -var16 = 43; -var17 = string__NativeString__to_s_with_length(var15, var16); -var14 = var17; -varonce13 = var14; +var19 = " is too important, the problematic type is "; +var20 = 43; +var21 = string__NativeString__to_s_with_length(var19, var20); +var18 = var21; +varonce17 = var18; } -if (varonce18) { -var19 = varonce18; +if (varonce22) { +var23 = varonce22; } else { -var20 = "."; -var21 = 1; -var22 = string__NativeString__to_s_with_length(var20, var21); -var19 = var22; -varonce18 = var19; +var24 = "."; +var25 = 1; +var26 = string__NativeString__to_s_with_length(var24, var25); +var23 = var26; +varonce22 = var23; +} +var27 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var27 = array_instance Array[Object] */ +var28 = 5; +var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var29)->values[0] = (val*) var13; +var30 = BOX_kernel__Int(var_d); /* autobox from Int to Object */ +((struct instance_array__NativeArray*)var29)->values[1] = (val*) var30; +((struct instance_array__NativeArray*)var29)->values[2] = (val*) var18; +((struct instance_array__NativeArray*)var29)->values[3] = (val*) var_mtype; +((struct instance_array__NativeArray*)var29)->values[4] = (val*) var23; +{ +((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on */; +} } -var23 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var23 = array_instance Array[Object] */ -var24 = 5; -var25 = NEW_array__NativeArray(var24, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var25)->values[0] = (val*) var9; -var26 = BOX_kernel__Int(var_d); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var25)->values[1] = (val*) var26; -((struct instance_array__NativeArray*)var25)->values[2] = (val*) var14; -((struct instance_array__NativeArray*)var25)->values[3] = (val*) var_mtype; -((struct instance_array__NativeArray*)var25)->values[4] = (val*) var19; -((void (*)(val*, val*, long))(var23->class->vft[COLOR_array__Array__with_native]))(var23, var25, var24) /* with_native on */; -CHECK_NEW_array__Array(var23); +{ +var31 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on */; +} +{ +toolcontext__ToolContext__fatal_error(var9, var12, var31); /* Direct call toolcontext#ToolContext#fatal_error on */ } -var27 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on */; -((void (*)(val*, val*, val*))(var7->class->vft[COLOR_toolcontext__ToolContext__fatal_error]))(var7, var8, var27) /* fatal_error on */; } else { } RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#check_depth for (self: Object, MClassType) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__check_depth(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__check_depth(self, p0); +rapid_type_analysis__RapidTypeAnalysis__check_depth(self, p0); /* Direct call rapid_type_analysis#RapidTypeAnalysis#check_depth on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_new for (self: RapidTypeAnalysis, MClassType, MClassType) */ @@ -1340,255 +3330,664 @@ short int var /* : Bool */; short int var1 /* : Bool */; short int var2 /* : Bool */; val* var3 /* : HashSet[MClassType] */; -short int var4 /* : Bool */; val* var5 /* : HashSet[MClassType] */; -val* var6 /* : HashSet[MClassType] */; -short int var7 /* : Bool */; -val* var8 /* : HashSet[MClassType] */; -val* var9 /* : MClass */; +short int var6 /* : Bool */; +val* var7 /* : HashSet[MClassType] */; +val* var9 /* : HashSet[MClassType] */; +val* var10 /* : HashSet[MClassType] */; +val* var12 /* : HashSet[MClassType] */; +short int var13 /* : Bool */; +val* var14 /* : HashSet[MClassType] */; +val* var16 /* : HashSet[MClassType] */; +val* var17 /* : MClass */; +val* var19 /* : MClass */; val* var_mclass /* var mclass: MClass */; -val* var10 /* : HashSet[MClass] */; -short int var11 /* : Bool */; -val* var12 /* : HashSet[MClass] */; -val* var13 /* : HashSet[MMethod] */; -val* var14 /* : Iterator[nullable Object] */; -short int var15 /* : Bool */; -val* var16 /* : nullable Object */; +val* var20 /* : HashSet[MClass] */; +val* var22 /* : HashSet[MClass] */; +short int var23 /* : Bool */; +val* var24 /* : HashSet[MClass] */; +val* var26 /* : HashSet[MClass] */; +val* var27 /* : HashSet[MMethod] */; +val* var29 /* : HashSet[MMethod] */; +val* var_ /* var : HashSet[MMethod] */; +val* var30 /* : Iterator[Object] */; +val* var_31 /* var : Iterator[MMethod] */; +short int var32 /* : Bool */; +val* var33 /* : nullable Object */; val* var_p /* var p: MMethod */; -val* var17 /* : HashSet[MMethodDef] */; -val* var18 /* : Iterator[nullable Object] */; -short int var19 /* : Bool */; -val* var20 /* : nullable Object */; -val* var_p21 /* var p: MMethodDef */; -val* var23 /* : MModule */; -val* var24 /* : MType */; +val* var35 /* : HashSet[MMethodDef] */; +val* var37 /* : HashSet[MMethodDef] */; +val* var_38 /* var : HashSet[MMethodDef] */; +val* var39 /* : Iterator[Object] */; +val* var_40 /* var : Iterator[MMethodDef] */; +short int var41 /* : Bool */; +val* var42 /* : nullable Object */; +val* var_p43 /* var p: MMethodDef */; +val* var46 /* : Array[MMethod] */; +val* var48 /* : Array[MMethod] */; +val* var_49 /* var : Array[MMethod] */; +val* var50 /* : ArrayIterator[nullable Object] */; +val* var_51 /* var : ArrayIterator[MMethod] */; +short int var52 /* : Bool */; +val* var53 /* : nullable Object */; +val* var_p54 /* var p: MMethod */; +val* var55 /* : HashSet[MMethod] */; +val* var57 /* : HashSet[MMethod] */; +val* var60 /* : Array[MMethod] */; +val* var62 /* : Array[MMethod] */; +val* var63 /* : MModule */; +val* var65 /* : MModule */; +val* var66 /* : MClassType */; val* var_bound_mtype /* var bound_mtype: MClassType */; -val* var25 /* : MModule */; -val* var26 /* : Set[MClassDef] */; -val* var27 /* : Iterator[nullable Object] */; -short int var28 /* : Bool */; -val* var29 /* : nullable Object */; +val* var67 /* : MModule */; +val* var69 /* : MModule */; +val* var70 /* : Set[MClassDef] */; +val* var_71 /* var : Set[MClassDef] */; +val* var72 /* : Iterator[nullable Object] */; +val* var_73 /* var : Iterator[MClassDef] */; +short int var74 /* : Bool */; +val* var75 /* : nullable Object */; val* var_cd /* var cd: MClassDef */; -val* var30 /* : ModelBuilder */; -val* var31 /* : HashMap[MClassDef, AClassdef] */; -short int var32 /* : Bool */; -short int var33 /* : Bool */; -val* var35 /* : ModelBuilder */; -val* var36 /* : HashMap[MClassDef, AClassdef] */; -val* var37 /* : nullable Object */; +val* var76 /* : ModelBuilder */; +val* var78 /* : ModelBuilder */; +val* var79 /* : HashMap[MClassDef, AClassdef] */; +val* var81 /* : HashMap[MClassDef, AClassdef] */; +short int var82 /* : Bool */; +short int var83 /* : Bool */; +val* var85 /* : ModelBuilder */; +val* var87 /* : ModelBuilder */; +val* var88 /* : HashMap[MClassDef, AClassdef] */; +val* var90 /* : HashMap[MClassDef, AClassdef] */; +val* var91 /* : nullable Object */; val* var_nclassdef /* var nclassdef: AClassdef */; -val* var38 /* : ANodes[APropdef] */; -val* var39 /* : Iterator[nullable Object] */; -short int var40 /* : Bool */; -val* var41 /* : nullable Object */; +val* var92 /* : ANodes[APropdef] */; +val* var94 /* : ANodes[APropdef] */; +val* var_95 /* var : ANodes[APropdef] */; +val* var96 /* : Iterator[ANode] */; +val* var_97 /* var : Iterator[APropdef] */; +short int var98 /* : Bool */; +val* var99 /* : nullable Object */; val* var_npropdef /* var npropdef: APropdef */; -short int var42 /* : Bool */; +short int var100 /* : Bool */; int cltype; int idtype; -short int var43 /* : Bool */; -val* var45 /* : nullable AExpr */; -val* var_nexpr /* var nexpr: nullable AExpr */; -val* var46 /* : null */; -short int var47 /* : Bool */; -val* var48 /* : nullable MPropDef */; +short int var101 /* : Bool */; +short int var103 /* : Bool */; +short int var105 /* : Bool */; +short int var106 /* : Bool */; +val* var107 /* : nullable MPropDef */; +val* var109 /* : nullable MPropDef */; val* var_mpropdef /* var mpropdef: MAttributeDef */; -val* var49 /* : RapidTypeVisitor */; +val* var110 /* : RapidTypeVisitor */; val* var_v /* var v: RapidTypeVisitor */; +val* var111 /* : nullable AExpr */; +val* var113 /* : nullable AExpr */; +val* var114 /* : nullable AExpr */; +val* var116 /* : nullable AExpr */; var_recv = p0; var_mtype = p1; +{ var = ((short int (*)(val*))(var_recv->class->vft[COLOR_model__MType__need_anchor]))(var_recv) /* need_anchor on */; +} var1 = !var; -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/rapid_type_analysis.nit", 217); -exit(1); +if (unlikely(!var1)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 325); +show_backtrace(1); } +{ var2 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on */; +} if (var2){ -var3 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_types]))(self) /* live_open_types on */; -var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var_mtype) /* has on */; -if (var4){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on */ +var5 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 58); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = hash_collection__HashSet__has(var3, var_mtype); +} +if (var6){ goto RET_LABEL; } else { } -var5 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_types]))(self) /* live_open_types on */; -((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var5, var_mtype) /* add on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on */ +var9 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 58); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +hash_collection__HashSet__add(var7, var_mtype); /* Direct call hash_collection#HashSet#add on */ +} } else { -var6 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on */; -var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__Collection__has]))(var6, var_mtype) /* has on */; -if (var7){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on */ +var12 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +var13 = hash_collection__HashSet__has(var10, var_mtype); +} +if (var13){ goto RET_LABEL; } else { } -var8 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on */; -((void (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var8, var_mtype) /* add on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on */ +var16 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); } -var9 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on */; -var_mclass = var9; -var10 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_classes]))(self) /* live_classes on */; -var11 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__Collection__has]))(var10, var_mclass) /* has on */; -if (var11){ +var14 = var16; +RET_LABEL15:(void)0; +} +} +{ +hash_collection__HashSet__add(var14, var_mtype); /* Direct call hash_collection#HashSet#add on */ +} +} +{ +{ /* Inline model#MClassType#mclass (var_mtype) on */ +var19 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var19 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var17 = var19; +RET_LABEL18:(void)0; +} +} +var_mclass = var17; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on */ +var22 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 62); +show_backtrace(1); +} +var20 = var22; +RET_LABEL21:(void)0; +} +} +{ +var23 = hash_collection__HashSet__has(var20, var_mclass); +} +if (var23){ goto RET_LABEL; } else { } -var12 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_classes]))(self) /* live_classes on */; -((void (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var12, var_mclass) /* add on */; -var13 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__totry_methods]))(self) /* totry_methods on */; -var14 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Collection__iterator]))(var13) /* iterator on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on */ +var26 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 62); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +hash_collection__HashSet__add(var24, var_mclass); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on */ +var29 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on */ +if (unlikely(var29 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 162); +show_backtrace(1); +} +var27 = var29; +RET_LABEL28:(void)0; +} +} +var_ = var27; +{ +var30 = hash_collection__HashSet__iterator(var_); +} +var_31 = var30; for(;;) { -var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on */; -if(!var15) break; -var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on */; -var_p = var16; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__try_send]))(self, var_mtype, var_p) /* try_send on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on */; +{ +var32 = ((short int (*)(val*))(var_31->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_31) /* is_ok on */; +} +if (var32){ +{ +var33 = ((val* (*)(val*))(var_31->class->vft[COLOR_abstract_collection__Iterator__item]))(var_31) /* item on */; +} +var_p = var33; +{ +rapid_type_analysis__RapidTypeAnalysis__try_send(self, var_mtype, var_p); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on */ +} +{ +((void (*)(val*))(var_31->class->vft[COLOR_abstract_collection__Iterator__next]))(var_31) /* next on */; +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; -var17 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_super_sends]))(self) /* live_super_sends on */; -var18 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Collection__iterator]))(var17) /* iterator on */; +{ +{ /* Inline abstract_collection#Iterator#finish (var_31) on */ +RET_LABEL34:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on */ +var37 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on */ +if (unlikely(var37 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 108); +show_backtrace(1); +} +var35 = var37; +RET_LABEL36:(void)0; +} +} +var_38 = var35; +{ +var39 = hash_collection__HashSet__iterator(var_38); +} +var_40 = var39; for(;;) { -var19 = ((short int (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var18) /* is_ok on */; -if(!var19) break; -var20 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__item]))(var18) /* item on */; -var_p21 = var20; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__try_super_send]))(self, var_mtype, var_p21) /* try_super_send on */; -CONTINUE_label22: (void)0; -((void (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__next]))(var18) /* next on */; -} -BREAK_label22: (void)0; -var23 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var24 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var23, var_recv) /* anchor_to on */; -var_bound_mtype = var24; -var25 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var26 = ((val* (*)(val*, val*))(var_bound_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_bound_mtype, var25) /* collect_mclassdefs on */; -var27 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Collection__iterator]))(var26) /* iterator on */; +{ +var41 = ((short int (*)(val*))(var_40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_40) /* is_ok on */; +} +if (var41){ +{ +var42 = ((val* (*)(val*))(var_40->class->vft[COLOR_abstract_collection__Iterator__item]))(var_40) /* item on */; +} +var_p43 = var42; +{ +rapid_type_analysis__RapidTypeAnalysis__try_super_send(self, var_mtype, var_p43); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_super_send on */ +} +{ +((void (*)(val*))(var_40->class->vft[COLOR_abstract_collection__Iterator__next]))(var_40) /* next on */; +} +} else { +goto BREAK_label44; +} +} +BREAK_label44: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_40) on */ +RET_LABEL45:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on */ +var48 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on */ +if (unlikely(var48 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 165); +show_backtrace(1); +} +var46 = var48; +RET_LABEL47:(void)0; +} +} +var_49 = var46; +{ +var50 = array__AbstractArrayRead__iterator(var_49); +} +var_51 = var50; for(;;) { -var28 = ((short int (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var27) /* is_ok on */; -if(!var28) break; -var29 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__item]))(var27) /* item on */; -var_cd = var29; -var30 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -var31 = ((val* (*)(val*))(var30->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var30) /* mclassdef2nclassdef on */; -var32 = ((short int (*)(val*, val*))(var31->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var31, var_cd) /* has_key on */; -var33 = !var32; -if (var33){ -goto CONTINUE_label34; +{ +var52 = array__ArrayIterator__is_ok(var_51); +} +if (var52){ +{ +var53 = array__ArrayIterator__item(var_51); +} +var_p54 = var53; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on */ +var57 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on */ +if (unlikely(var57 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 162); +show_backtrace(1); +} +var55 = var57; +RET_LABEL56:(void)0; +} +} +{ +hash_collection__HashSet__remove(var55, var_p54); /* Direct call hash_collection#HashSet#remove on */ +} +{ +array__ArrayIterator__next(var_51); /* Direct call array#ArrayIterator#next on */ +} } else { +goto BREAK_label58; } -var35 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(self) /* modelbuilder on */; -var36 = ((val* (*)(val*))(var35->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var35) /* mclassdef2nclassdef on */; -var37 = ((val* (*)(val*, val*))(var36->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var36, var_cd) /* [] on */; -var_nclassdef = var37; -var38 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on */; -var39 = ((val* (*)(val*))(var38->class->vft[COLOR_abstract_collection__Collection__iterator]))(var38) /* iterator on */; +} +BREAK_label58: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_51) on */ +RET_LABEL59:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on */ +var62 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on */ +if (unlikely(var62 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 165); +show_backtrace(1); +} +var60 = var62; +RET_LABEL61:(void)0; +} +} +{ +array__AbstractArray__clear(var60); /* Direct call array#AbstractArray#clear on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var65 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var65 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var63 = var65; +RET_LABEL64:(void)0; +} +} +{ +var66 = model__MClassType__anchor_to(var_mtype, var63, var_recv); +} +var_bound_mtype = var66; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var69 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var69 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var67 = var69; +RET_LABEL68:(void)0; +} +} +{ +var70 = model__MClassType__collect_mclassdefs(var_bound_mtype, var67); +} +var_71 = var70; +{ +var72 = ((val* (*)(val*))(var_71->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_71) /* iterator on */; +} +var_73 = var72; +for(;;) { +{ +var74 = ((short int (*)(val*))(var_73->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_73) /* is_ok on */; +} +if (var74){ +{ +var75 = ((val* (*)(val*))(var_73->class->vft[COLOR_abstract_collection__Iterator__item]))(var_73) /* item on */; +} +var_cd = var75; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var78 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var78 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var76 = var78; +RET_LABEL77:(void)0; +} +} +{ +{ /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (var76) on */ +var81 = var76->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on */ +if (unlikely(var81 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef"); +PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_class.nit", 410); +show_backtrace(1); +} +var79 = var81; +RET_LABEL80:(void)0; +} +} +{ +var82 = abstract_collection__MapRead__has_key(var79, var_cd); +} +var83 = !var82; +if (var83){ +goto BREAK_label84; +} else { +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on */ +var87 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var87 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var85 = var87; +RET_LABEL86:(void)0; +} +} +{ +{ /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (var85) on */ +var90 = var85->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on */ +if (unlikely(var90 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef"); +PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_class.nit", 410); +show_backtrace(1); +} +var88 = var90; +RET_LABEL89:(void)0; +} +} +{ +var91 = hash_collection__HashMap___91d_93d(var88, var_cd); +} +var_nclassdef = var91; +{ +{ /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef) on */ +var94 = var_nclassdef->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on */ +if (unlikely(var94 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs"); +PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929); +show_backtrace(1); +} +var92 = var94; +RET_LABEL93:(void)0; +} +} +var_95 = var92; +{ +var96 = parser_nodes__ANodes__iterator(var_95); +} +var_97 = var96; for(;;) { -var40 = ((short int (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var39) /* is_ok on */; -if(!var40) break; -var41 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__item]))(var39) /* item on */; -var_npropdef = var41; +{ +var98 = ((short int (*)(val*))(var_97->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_97) /* is_ok on */; +} +if (var98){ +{ +var99 = ((val* (*)(val*))(var_97->class->vft[COLOR_abstract_collection__Iterator__item]))(var_97) /* item on */; +} +var_npropdef = var99; /* isa AAttrPropdef */ cltype = type_parser_nodes__AAttrPropdef.color; idtype = type_parser_nodes__AAttrPropdef.id; if(cltype >= var_npropdef->type->table_size) { -var42 = 0; +var100 = 0; +} else { +var100 = var_npropdef->type->type_table[cltype] == idtype; +} +var101 = !var100; +if (var101){ +goto BREAK_label102; } else { -var42 = var_npropdef->type->type_table[cltype] == idtype; } -var43 = !var42; -if (var43){ -goto CONTINUE_label44; +{ +{ /* Inline modelize_property#AAttrPropdef#has_value (var_npropdef) on */ +var105 = var_npropdef->attrs[COLOR_modelize_property__AAttrPropdef___has_value].s; /* _has_value on */ +var103 = var105; +RET_LABEL104:(void)0; +} +} +var106 = !var103; +if (var106){ +goto BREAK_label102; } else { } -var45 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_parser_nodes__AAttrPropdef__n_expr]))(var_npropdef) /* n_expr on */; -var_nexpr = var45; -var46 = NULL; -if (var_nexpr == NULL) { -var47 = 1; /* is null */ +{ +{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on */ +var109 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on */ +var107 = var109; +RET_LABEL108:(void)0; +} +} +if (unlikely(var107 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 354); +show_backtrace(1); +} +var_mpropdef = var107; +var110 = NEW_rapid_type_analysis__RapidTypeVisitor(&type_rapid_type_analysis__RapidTypeVisitor); +{ +rapid_type_analysis__RapidTypeVisitor__init(var110, self, var_bound_mtype, var_mpropdef); /* Direct call rapid_type_analysis#RapidTypeVisitor#init on */ +} +var_v = var110; +{ +{ /* Inline parser_nodes#AAttrPropdef#n_expr (var_npropdef) on */ +var113 = var_npropdef->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on */ +var111 = var113; +RET_LABEL112:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var111); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +{ +{ /* Inline parser_nodes#AAttrPropdef#n_block (var_npropdef) on */ +var116 = var_npropdef->attrs[COLOR_parser_nodes__AAttrPropdef___n_block].val; /* _n_block on */ +var114 = var116; +RET_LABEL115:(void)0; +} +} +{ +parser_nodes__Visitor__enter_visit(var_v, var114); /* Direct call parser_nodes#Visitor#enter_visit on */ +} +BREAK_label102: (void)0; +{ +((void (*)(val*))(var_97->class->vft[COLOR_abstract_collection__Iterator__next]))(var_97) /* next on */; +} } else { -var47 = 0; /* arg is null but recv is not */ +goto BREAK_label117; +} +} +BREAK_label117: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_97) on */ +RET_LABEL118:(void)0; +} +} +BREAK_label84: (void)0; +{ +((void (*)(val*))(var_73->class->vft[COLOR_abstract_collection__Iterator__next]))(var_73) /* next on */; } -if (var47){ -goto CONTINUE_label44; } else { +goto BREAK_label119; } -var48 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_npropdef) /* mpropdef on */; -if (var48 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 242); -exit(1); } -var_mpropdef = var48; -var49 = NEW_rapid_type_analysis__RapidTypeVisitor(&type_rapid_type_analysis__RapidTypeVisitor); -((void (*)(val*, val*, val*, val*))(var49->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__init]))(var49, self, var_bound_mtype, var_mpropdef) /* init on */; -CHECK_NEW_rapid_type_analysis__RapidTypeVisitor(var49); -var_v = var49; -((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_nexpr) /* enter_visit on */; -CONTINUE_label44: (void)0; -((void (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__next]))(var39) /* next on */; +BREAK_label119: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_73) on */ +RET_LABEL120:(void)0; } -BREAK_label44: (void)0; -CONTINUE_label34: (void)0; -((void (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__next]))(var27) /* next on */; } -BREAK_label34: (void)0; RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_new for (self: Object, MClassType, MClassType) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__add_new(val* self, val* p0, val* p1) { -rapid_type_analysis__RapidTypeAnalysis__add_new(self, p0, p1); +rapid_type_analysis__RapidTypeAnalysis__add_new(self, p0, p1); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_cast for (self: RapidTypeAnalysis, MType) */ void rapid_type_analysis__RapidTypeAnalysis__add_cast(val* self, val* p0) { val* var_mtype /* var mtype: MType */; short int var /* : Bool */; -int cltype; -int idtype; -val* var1 /* : MType */; -short int var2 /* : Bool */; +val* var1 /* : HashSet[MType] */; val* var3 /* : HashSet[MType] */; -short int var4 /* : Bool */; -int cltype5; -int idtype6; -val* var7 /* : HashSet[MClassType] */; +val* var4 /* : HashSet[MType] */; +val* var6 /* : HashSet[MType] */; var_mtype = p0; -/* isa MNullableType */ -cltype = type_model__MNullableType.color; -idtype = type_model__MNullableType.id; -if(cltype >= var_mtype->type->table_size) { -var = 0; -} else { -var = var_mtype->type->type_table[cltype] == idtype; +{ +var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on */; } if (var){ -var1 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on */; -var_mtype = var1; -} else { +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 68); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +hash_collection__HashSet__add(var1, var_mtype); /* Direct call hash_collection#HashSet#add on */ } -var2 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on */; -if (var2){ -var3 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types]))(self) /* live_open_cast_types on */; -((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var3, var_mtype) /* add on */; -} else { -/* isa MClassType */ -cltype5 = type_model__MClassType.color; -idtype6 = type_model__MClassType.id; -if(cltype5 >= var_mtype->type->table_size) { -var4 = 0; } else { -var4 = var_mtype->type->type_table[cltype5] == idtype6; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on */ +var6 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 65); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; } -if (!var4) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/rapid_type_analysis.nit", 256); -exit(1); } -var7 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_cast_types]))(self) /* live_cast_types on */; -((void (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var7, var_mtype) /* add on */; +{ +hash_collection__HashSet__add(var4, var_mtype); /* Direct call hash_collection#HashSet#add on */ +} } RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_cast for (self: Object, MType) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__add_cast(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__add_cast(self, p0); +rapid_type_analysis__RapidTypeAnalysis__add_cast(self, p0); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_cast on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#try_send for (self: RapidTypeAnalysis, MClassType, MMethod) */ @@ -1596,130 +3995,353 @@ void rapid_type_analysis__RapidTypeAnalysis__try_send(val* self, val* p0, val* p val* var_recv /* var recv: MClassType */; val* var_mproperty /* var mproperty: MMethod */; val* var /* : MClass */; -val* var1 /* : MClassDef */; -val* var2 /* : MClassType */; -val* var3 /* : MModule */; -short int var4 /* : Bool */; -short int var5 /* : Bool */; -val* var6 /* : MModule */; -val* var7 /* : MPropDef */; +val* var2 /* : MClass */; +val* var3 /* : MClassDef */; +val* var5 /* : MClassDef */; +val* var6 /* : MClassType */; +val* var8 /* : MClassType */; +val* var9 /* : MModule */; +val* var11 /* : MModule */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +val* var14 /* : MModule */; +val* var16 /* : MModule */; +val* var17 /* : MPropDef */; val* var_d /* var d: MMethodDef */; var_recv = p0; var_mproperty = p1; -var = ((val* (*)(val*))(var_recv->class->vft[COLOR_model__MClassType__mclass]))(var_recv) /* mclass on */; -var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClass__intro]))(var) /* intro on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on */; -var_recv = var2; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var4 = ((short int (*)(val*, val*, val*))(var_recv->class->vft[COLOR_model__MType__has_mproperty]))(var_recv, var3, var_mproperty) /* has_mproperty on */; -var5 = !var4; -if (var5){ +{ +{ /* Inline model#MClassType#mclass (var_recv) on */ +var2 = var_recv->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline model#MClass#intro (var) on */ +var5 = var->attrs[COLOR_model__MClass___intro].val; /* _intro on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var3) on */ +var8 = var3->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +var_recv = var6; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var11 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +var12 = model__MType__has_mproperty(var_recv, var9, var_mproperty); +} +var13 = !var12; +if (var13){ goto RET_LABEL; } else { } -var6 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var7 = ((val* (*)(val*, val*, val*))(var_mproperty->class->vft[COLOR_model__MProperty__lookup_first_definition]))(var_mproperty, var6, var_recv) /* lookup_first_definition on */; -var_d = var7; -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_call]))(self, var_d) /* add_call on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var16 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var14 = var16; +RET_LABEL15:(void)0; +} +} +{ +var17 = model__MProperty__lookup_first_definition(var_mproperty, var14, var_recv); +} +var_d = var17; +{ +rapid_type_analysis__RapidTypeAnalysis__add_call(self, var_d); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_call on */ +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#try_send for (self: Object, MClassType, MMethod) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__try_send(val* self, val* p0, val* p1) { -rapid_type_analysis__RapidTypeAnalysis__try_send(self, p0, p1); +rapid_type_analysis__RapidTypeAnalysis__try_send(self, p0, p1); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_call for (self: RapidTypeAnalysis, MMethodDef) */ void rapid_type_analysis__RapidTypeAnalysis__add_call(val* self, val* p0) { val* var_mpropdef /* var mpropdef: MMethodDef */; val* var /* : HashSet[MMethodDef] */; -short int var1 /* : Bool */; val* var2 /* : HashSet[MMethodDef] */; -val* var3 /* : List[MMethodDef] */; -val* var4 /* : MProperty */; +short int var3 /* : Bool */; +val* var4 /* : HashSet[MMethodDef] */; +val* var6 /* : HashSet[MMethodDef] */; +val* var7 /* : List[MMethodDef] */; +val* var9 /* : List[MMethodDef] */; +val* var10 /* : MProperty */; +val* var12 /* : MProperty */; val* var_mproperty /* var mproperty: MMethod */; -val* var5 /* : Array[MPropDef] */; -long var6 /* : Int */; -long var7 /* : Int */; -short int var8 /* : Bool */; -short int var10 /* : Bool */; +val* var13 /* : Array[MPropDef] */; +val* var15 /* : Array[MPropDef] */; +long var16 /* : Int */; +long var18 /* : Int */; +long var19 /* : Int */; +short int var20 /* : Bool */; +short int var22 /* : Bool */; int cltype; int idtype; -short int var11 /* : Bool */; -val* var12 /* : Array[MPropDef] */; -val* var13 /* : Iterator[nullable Object] */; -short int var14 /* : Bool */; -val* var15 /* : nullable Object */; +const char* var_class_name; +short int var23 /* : Bool */; +val* var24 /* : Array[MPropDef] */; +val* var26 /* : Array[MPropDef] */; +val* var_ /* var : Array[MMethodDef] */; +val* var27 /* : ArrayIterator[nullable Object] */; +val* var_28 /* var : ArrayIterator[MMethodDef] */; +short int var29 /* : Bool */; +val* var30 /* : nullable Object */; val* var_d /* var d: MMethodDef */; -short int var16 /* : Bool */; -val* var17 /* : HashSet[MMethodDef] */; -short int var18 /* : Bool */; -short int var19 /* : Bool */; -val* var20 /* : HashSet[MMethod] */; -val* var21 /* : MProperty */; +short int var31 /* : Bool */; +short int var33 /* : Bool */; +val* var34 /* : HashSet[MMethodDef] */; +val* var36 /* : HashSet[MMethodDef] */; +short int var37 /* : Bool */; +short int var38 /* : Bool */; +val* var41 /* : Array[MMethod] */; +val* var43 /* : Array[MMethod] */; +val* var44 /* : MProperty */; +val* var46 /* : MProperty */; var_mpropdef = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_methoddefs]))(self) /* live_methoddefs on */; -var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__Collection__has]))(var, var_mpropdef) /* has on */; -if (var1){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on */ +var2 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 72); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = hash_collection__HashSet__has(var, var_mpropdef); +} +if (var3){ goto RET_LABEL; } else { } -var2 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_methoddefs]))(self) /* live_methoddefs on */; -((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_mpropdef) /* add on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__todo]))(self) /* todo on */; -((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var3, var_mpropdef) /* add on */; -var4 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on */; -var_mproperty = var4; -var5 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on */; -var6 = ((long (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__length]))(var5) /* length on */; -var7 = 1; -{ /* Inline kernel#Int#<= (var6,var7) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var10 = 1; /* easy isa OTHER*/ -if (!var10) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256); -exit(1); -} -var11 = var6 <= var7; -var8 = var11; -goto RET_LABEL9; -RET_LABEL9:(void)0; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on */ +var6 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 72); +show_backtrace(1); } -if (var8){ +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +hash_collection__HashSet__add(var4, var_mpropdef); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on */ +var9 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 172); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +abstract_collection__Sequence__add(var7, var_mpropdef); /* Direct call abstract_collection#Sequence#add on */ +} +{ +{ /* Inline model#MPropDef#mproperty (var_mpropdef) on */ +var12 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +var_mproperty = var10; +{ +{ /* Inline model#MProperty#mpropdefs (var_mproperty) on */ +var15 = var_mproperty->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644); +show_backtrace(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +{ /* Inline array#AbstractArrayRead#length (var13) on */ +var18 = var13->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var16 = var18; +RET_LABEL17:(void)0; +} +} +var19 = 1; +{ +{ /* Inline kernel#Int#<= (var16,var19) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var22 = 1; /* easy isa OTHER*/ +if (unlikely(!var22)) { +var_class_name = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370); +show_backtrace(1); +} +var23 = var16 <= var19; +var20 = var23; +goto RET_LABEL21; +RET_LABEL21:(void)0; +} +} +if (var20){ goto RET_LABEL; } else { } -var12 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on */; -var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on */; +{ +{ /* Inline model#MProperty#mpropdefs (var_mproperty) on */ +var26 = var_mproperty->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +var_ = var24; +{ +var27 = array__AbstractArrayRead__iterator(var_); +} +var_28 = var27; for(;;) { -var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on */; -if(!var14) break; -var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on */; -var_d = var15; -var16 = ((short int (*)(val*))(var_d->class->vft[COLOR_model__MMethodDef__is_abstract]))(var_d) /* is_abstract on */; -if (var16){ -goto CONTINUE_label; +{ +var29 = array__ArrayIterator__is_ok(var_28); +} +if (var29){ +{ +var30 = array__ArrayIterator__item(var_28); +} +var_d = var30; +{ +{ /* Inline model#MMethodDef#is_abstract (var_d) on */ +var33 = var_d->attrs[COLOR_model__MMethodDef___is_abstract].s; /* _is_abstract on */ +var31 = var33; +RET_LABEL32:(void)0; +} +} +if (var31){ +goto BREAK_label; } else { } -var17 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_methoddefs]))(self) /* live_methoddefs on */; -var18 = ((short int (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__Collection__has]))(var17, var_d) /* has on */; -var19 = !var18; -if (var19){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on */ +var36 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on */ +if (unlikely(var36 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 72); +show_backtrace(1); +} +var34 = var36; +RET_LABEL35:(void)0; +} +} +{ +var37 = hash_collection__HashSet__has(var34, var_d); +} +var38 = !var37; +if (var38){ goto RET_LABEL; } else { } -CONTINUE_label: (void)0; -((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on */; -} BREAK_label: (void)0; -var20 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__totry_methods]))(self) /* totry_methods on */; -var21 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on */; -((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var20, var21) /* remove on */; +{ +array__ArrayIterator__next(var_28); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label39; +} +} +BREAK_label39: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_28) on */ +RET_LABEL40:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on */ +var43 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on */ +if (unlikely(var43 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 165); +show_backtrace(1); +} +var41 = var43; +RET_LABEL42:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mproperty (var_mpropdef) on */ +var46 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var46 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898); +show_backtrace(1); +} +var44 = var46; +RET_LABEL45:(void)0; +} +} +{ +array__Array__add(var41, var44); /* Direct call array#Array#add on */ +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_call for (self: Object, MMethodDef) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__add_call(val* self, val* p0) { -rapid_type_analysis__RapidTypeAnalysis__add_call(self, p0); +rapid_type_analysis__RapidTypeAnalysis__add_call(self, p0); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_call on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_send for (self: RapidTypeAnalysis, MType, MMethod) */ @@ -1727,72 +4349,227 @@ void rapid_type_analysis__RapidTypeAnalysis__add_send(val* self, val* p0, val* p val* var_recv /* var recv: MType */; val* var_mproperty /* var mproperty: MMethod */; val* var /* : HashSet[MMethod] */; -short int var1 /* : Bool */; val* var2 /* : HashSet[MMethod] */; -val* var3 /* : Array[MPropDef] */; -long var4 /* : Int */; -long var5 /* : Int */; -short int var6 /* : Bool */; -short int var8 /* : Bool */; -val* var9 /* : Array[MPropDef] */; -val* var10 /* : nullable Object */; +short int var3 /* : Bool */; +val* var4 /* : HashSet[MMethod] */; +val* var6 /* : HashSet[MMethod] */; +val* var7 /* : HashSet[MMethod] */; +val* var9 /* : HashSet[MMethod] */; +val* var10 /* : Array[MPropDef] */; +val* var12 /* : Array[MPropDef] */; +long var13 /* : Int */; +long var15 /* : Int */; +long var16 /* : Int */; +short int var17 /* : Bool */; +short int var18 /* : Bool */; +short int var20 /* : Bool */; +val* var21 /* : Array[MPropDef] */; +val* var23 /* : Array[MPropDef] */; +val* var24 /* : nullable Object */; val* var_d /* var d: MMethodDef */; -val* var11 /* : HashSet[MMethod] */; -val* var12 /* : HashSet[MClass] */; -val* var13 /* : Iterator[nullable Object] */; -short int var14 /* : Bool */; -val* var15 /* : nullable Object */; +val* var25 /* : HashSet[MMethod] */; +val* var27 /* : HashSet[MMethod] */; +val* var28 /* : HashSet[MClass] */; +val* var30 /* : HashSet[MClass] */; +val* var_ /* var : HashSet[MClass] */; +val* var31 /* : Iterator[Object] */; +val* var_32 /* var : Iterator[MClass] */; +short int var33 /* : Bool */; +val* var34 /* : nullable Object */; val* var_c /* var c: MClass */; -val* var16 /* : MClassDef */; -val* var17 /* : MClassType */; +val* var35 /* : MClassDef */; +val* var37 /* : MClassDef */; +val* var38 /* : MClassType */; +val* var40 /* : MClassType */; var_recv = p0; var_mproperty = p1; -var = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_methods]))(self) /* live_methods on */; -var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__Collection__has]))(var, var_mproperty) /* has on */; -if (var1){ +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#try_methods (self) on */ +var2 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 168); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = hash_collection__HashSet__has(var, var_mproperty); +} +if (var3){ goto RET_LABEL; } else { } -var2 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_methods]))(self) /* live_methods on */; -((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_mproperty) /* add on */; -var3 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on */; -var4 = ((long (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__length]))(var3) /* length on */; -var5 = 1; -{ /* Inline kernel#Int#== (var4,var5) */ -var8 = var4 == var5; -var6 = var8; -goto RET_LABEL7; -RET_LABEL7:(void)0; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methods (self) on */ +var6 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 75); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +hash_collection__HashSet__add(var4, var_mproperty); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#try_methods (self) on */ +var9 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 168); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +hash_collection__HashSet__add(var7, var_mproperty); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline model#MProperty#mpropdefs (var_mproperty) on */ +var12 = var_mproperty->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +{ /* Inline array#AbstractArrayRead#length (var10) on */ +var15 = var10->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var13 = var15; +RET_LABEL14:(void)0; +} +} +var16 = 1; +{ +{ /* Inline kernel#Int#== (var13,var16) on */ +var20 = var13 == var16; +var18 = var20; +goto RET_LABEL19; +RET_LABEL19:(void)0; +} +var17 = var18; +} +if (var17){ +{ +{ /* Inline model#MProperty#mpropdefs (var_mproperty) on */ +var23 = var_mproperty->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +{ +var24 = abstract_collection__SequenceRead__first(var21); +} +var_d = var24; +{ +rapid_type_analysis__RapidTypeAnalysis__add_call(self, var_d); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_call on */ } -if (var6){ -var9 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on */; -var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__first]))(var9) /* first on */; -var_d = var10; -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_call]))(self, var_d) /* add_call on */; goto RET_LABEL; } else { } -var11 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__totry_methods]))(self) /* totry_methods on */; -((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var11, var_mproperty) /* add on */; -var12 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_classes]))(self) /* live_classes on */; -var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on */ +var27 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 162); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +{ +hash_collection__HashSet__add(var25, var_mproperty); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on */ +var30 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 62); +show_backtrace(1); +} +var28 = var30; +RET_LABEL29:(void)0; +} +} +var_ = var28; +{ +var31 = hash_collection__HashSet__iterator(var_); +} +var_32 = var31; for(;;) { -var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on */; -if(!var14) break; -var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on */; -var_c = var15; -var16 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__intro]))(var_c) /* intro on */; -var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClassDef__bound_mtype]))(var16) /* bound_mtype on */; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__try_send]))(self, var17, var_mproperty) /* try_send on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on */; +{ +var33 = ((short int (*)(val*))(var_32->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_32) /* is_ok on */; +} +if (var33){ +{ +var34 = ((val* (*)(val*))(var_32->class->vft[COLOR_abstract_collection__Iterator__item]))(var_32) /* item on */; +} +var_c = var34; +{ +{ /* Inline model#MClass#intro (var_c) on */ +var37 = var_c->attrs[COLOR_model__MClass___intro].val; /* _intro on */ +if (unlikely(var37 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420); +show_backtrace(1); +} +var35 = var37; +RET_LABEL36:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var35) on */ +var40 = var35->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var40 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var38 = var40; +RET_LABEL39:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__try_send(self, var38, var_mproperty); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on */ +} +{ +((void (*)(val*))(var_32->class->vft[COLOR_abstract_collection__Iterator__next]))(var_32) /* next on */; +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_32) on */ +RET_LABEL41:(void)0; +} +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_send for (self: Object, MType, MMethod) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__add_send(val* self, val* p0, val* p1) { -rapid_type_analysis__RapidTypeAnalysis__add_send(self, p0, p1); +rapid_type_analysis__RapidTypeAnalysis__add_send(self, p0, p1); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#try_super_send for (self: RapidTypeAnalysis, MClassType, MMethodDef) */ @@ -1800,102 +4577,292 @@ void rapid_type_analysis__RapidTypeAnalysis__try_super_send(val* self, val* p0, val* var_recv /* var recv: MClassType */; val* var_mpropdef /* var mpropdef: MMethodDef */; val* var /* : MClass */; -val* var1 /* : MClassDef */; -val* var2 /* : MClassType */; -val* var3 /* : MModule */; -val* var4 /* : Set[MClassDef] */; +val* var2 /* : MClass */; +val* var3 /* : MClassDef */; val* var5 /* : MClassDef */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var8 /* : MModule */; -val* var9 /* : MPropDef */; +val* var6 /* : MClassType */; +val* var8 /* : MClassType */; +val* var9 /* : MModule */; +val* var11 /* : MModule */; +val* var12 /* : Set[MClassDef] */; +val* var13 /* : MClassDef */; +val* var15 /* : MClassDef */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; +val* var18 /* : MModule */; +val* var20 /* : MModule */; +val* var21 /* : MPropDef */; val* var_d /* var d: MMethodDef */; var_recv = p0; var_mpropdef = p1; -var = ((val* (*)(val*))(var_recv->class->vft[COLOR_model__MClassType__mclass]))(var_recv) /* mclass on */; -var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClass__intro]))(var) /* intro on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on */; -var_recv = var2; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var4 = ((val* (*)(val*, val*))(var_recv->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_recv, var3) /* collect_mclassdefs on */; -var5 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on */; -var6 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__Collection__has]))(var4, var5) /* has on */; -var7 = !var6; -if (var7){ +{ +{ /* Inline model#MClassType#mclass (var_recv) on */ +var2 = var_recv->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline model#MClass#intro (var) on */ +var5 = var->attrs[COLOR_model__MClass___intro].val; /* _intro on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var3) on */ +var8 = var3->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +var_recv = var6; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var11 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +var12 = model__MClassType__collect_mclassdefs(var_recv, var9); +} +{ +{ /* Inline model#MPropDef#mclassdef (var_mpropdef) on */ +var15 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +var16 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__Collection__has]))(var12, var13) /* has on */; +} +var17 = !var16; +if (var17){ goto RET_LABEL; } else { } -var8 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(self) /* mainmodule on */; -var9 = ((val* (*)(val*, val*, val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__lookup_next_definition]))(var_mpropdef, var8, var_recv) /* lookup_next_definition on */; -var_d = var9; -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_call]))(self, var_d) /* add_call on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on */ +var20 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +var21 = model__MPropDef__lookup_next_definition(var_mpropdef, var18, var_recv); +} +var_d = var21; +{ +rapid_type_analysis__RapidTypeAnalysis__add_call(self, var_d); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_call on */ +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#try_super_send for (self: Object, MClassType, MMethodDef) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__try_super_send(val* self, val* p0, val* p1) { -rapid_type_analysis__RapidTypeAnalysis__try_super_send(self, p0, p1); +rapid_type_analysis__RapidTypeAnalysis__try_super_send(self, p0, p1); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_super_send on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_super_send for (self: RapidTypeAnalysis, MType, MMethodDef) */ void rapid_type_analysis__RapidTypeAnalysis__add_super_send(val* self, val* p0, val* p1) { val* var_recv /* var recv: MType */; val* var_mpropdef /* var mpropdef: MMethodDef */; -val* var /* : HashSet[MMethodDef] */; -short int var1 /* : Bool */; -val* var2 /* : HashSet[MMethodDef] */; -val* var3 /* : HashSet[MClassType] */; -val* var4 /* : Iterator[nullable Object] */; -short int var5 /* : Bool */; -val* var6 /* : nullable Object */; -val* var_t /* var t: MClassType */; +short int var /* : Bool */; +short int var2 /* : Bool */; +val* var3 /* : HashSet[MMethodDef] */; +val* var5 /* : HashSet[MMethodDef] */; +short int var6 /* : Bool */; +val* var7 /* : HashSet[MMethodDef] */; +val* var9 /* : HashSet[MMethodDef] */; +val* var10 /* : HashSet[MClass] */; +val* var12 /* : HashSet[MClass] */; +val* var_ /* var : HashSet[MClass] */; +val* var13 /* : Iterator[Object] */; +val* var_14 /* var : Iterator[MClass] */; +short int var15 /* : Bool */; +val* var16 /* : nullable Object */; +val* var_c /* var c: MClass */; +val* var17 /* : MClassDef */; +val* var19 /* : MClassDef */; +val* var20 /* : MClassType */; +val* var22 /* : MClassType */; var_recv = p0; var_mpropdef = p1; -var = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_super_sends]))(self) /* live_super_sends on */; -var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__Collection__has]))(var, var_mpropdef) /* has on */; -if (var1){ +{ +{ /* Inline modelize_property#MPropDef#has_supercall (var_mpropdef) on */ +var2 = var_mpropdef->attrs[COLOR_modelize_property__MPropDef___has_supercall].s; /* _has_supercall on */ +var = var2; +RET_LABEL1:(void)0; +} +} +if (unlikely(!var)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 427); +show_backtrace(1); +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on */ +var5 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 108); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +var6 = hash_collection__HashSet__has(var3, var_mpropdef); +} +if (var6){ goto RET_LABEL; } else { } -var2 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_super_sends]))(self) /* live_super_sends on */; -((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_mpropdef) /* add on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on */; -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on */ +var9 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 108); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +hash_collection__HashSet__add(var7, var_mpropdef); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on */ +var12 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 62); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +var_ = var10; +{ +var13 = hash_collection__HashSet__iterator(var_); +} +var_14 = var13; for(;;) { -var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on */; -if(!var5) break; -var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on */; -var_t = var6; -((void (*)(val*, val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__try_super_send]))(self, var_t, var_mpropdef) /* try_super_send on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on */; +{ +var15 = ((short int (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on */; +} +if (var15){ +{ +var16 = ((val* (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__item]))(var_14) /* item on */; +} +var_c = var16; +{ +{ /* Inline model#MClass#intro (var_c) on */ +var19 = var_c->attrs[COLOR_model__MClass___intro].val; /* _intro on */ +if (unlikely(var19 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420); +show_backtrace(1); +} +var17 = var19; +RET_LABEL18:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var17) on */ +var22 = var17->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var20 = var22; +RET_LABEL21:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__try_super_send(self, var20, var_mpropdef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_super_send on */ +} +{ +((void (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__next]))(var_14) /* next on */; +} +} else { +goto BREAK_label; +} } BREAK_label: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_14) on */ +RET_LABEL23:(void)0; +} +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeAnalysis#add_super_send for (self: Object, MType, MMethodDef) */ void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__add_super_send(val* self, val* p0, val* p1) { -rapid_type_analysis__RapidTypeAnalysis__add_super_send(self, p0, p1); +rapid_type_analysis__RapidTypeAnalysis__add_super_send(self, p0, p1); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on */ RET_LABEL:; } -/* method rapid_type_analysis#RapidTypeAnalysis#init for (self: RapidTypeAnalysis, ModelBuilder, MModule) */ -void rapid_type_analysis__RapidTypeAnalysis__init(val* self, val* p0, val* p1) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dmodelbuilder].val = p0; /* @modelbuilder on */ -self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___64dmainmodule].val = p1; /* @mainmodule on */ +/* method rapid_type_analysis#RapidTypeAnalysis#init for (self: RapidTypeAnalysis) */ +void rapid_type_analysis__RapidTypeAnalysis__init(val* self) { +{ +((void (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__init]))(self) /* init on */; +} RET_LABEL:; } -/* method rapid_type_analysis#RapidTypeAnalysis#init for (self: Object, ModelBuilder, MModule) */ -void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__init(val* self, val* p0, val* p1) { -rapid_type_analysis__RapidTypeAnalysis__init(self, p0, p1); +/* method rapid_type_analysis#RapidTypeAnalysis#init for (self: Object) */ +void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__init(val* self) { +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#init (self) on */ +{ +((void (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__init]))(self) /* init on */; +} +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#analysis for (self: RapidTypeVisitor): RapidTypeAnalysis */ val* rapid_type_analysis__RapidTypeVisitor__analysis(val* self) { val* var /* : RapidTypeAnalysis */; val* var1 /* : RapidTypeAnalysis */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___64danalysis].val; /* @analysis on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @analysis", "src/rapid_type_analysis.nit", 327); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1905,29 +4872,43 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeVisitor__analysis(val* self) { val* var /* : RapidTypeAnalysis */; val* var1 /* : RapidTypeAnalysis */; -var1 = rapid_type_analysis__RapidTypeVisitor__analysis(self); +val* var3 /* : RapidTypeAnalysis */; +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method rapid_type_analysis#RapidTypeVisitor#analysis= for (self: RapidTypeVisitor, RapidTypeAnalysis) */ void rapid_type_analysis__RapidTypeVisitor__analysis_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___64danalysis].val = p0; /* @analysis on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val = p0; /* _analysis on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#analysis= for (self: Object, RapidTypeAnalysis) */ void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__analysis_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeVisitor__analysis_61d(self, p0); +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis= (self,p0) on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val = p0; /* _analysis on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#receiver for (self: RapidTypeVisitor): MClassType */ val* rapid_type_analysis__RapidTypeVisitor__receiver(val* self) { val* var /* : MClassType */; val* var1 /* : MClassType */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___64dreceiver].val; /* @receiver on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @receiver", "src/rapid_type_analysis.nit", 328); -exit(1); +var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441); +show_backtrace(1); } var = var1; RET_LABEL:; @@ -1937,51 +4918,45 @@ return var; val* VIRTUAL_rapid_type_analysis__RapidTypeVisitor__receiver(val* self) { val* var /* : MClassType */; val* var1 /* : MClassType */; -var1 = rapid_type_analysis__RapidTypeVisitor__receiver(self); +val* var3 /* : MClassType */; +{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} var = var1; RET_LABEL:; return var; } /* method rapid_type_analysis#RapidTypeVisitor#receiver= for (self: RapidTypeVisitor, MClassType) */ void rapid_type_analysis__RapidTypeVisitor__receiver_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___64dreceiver].val = p0; /* @receiver on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val = p0; /* _receiver on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#receiver= for (self: Object, MClassType) */ void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__receiver_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeVisitor__receiver_61d(self, p0); -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeVisitor#mpropdef for (self: RapidTypeVisitor): MPropDef */ -val* rapid_type_analysis__RapidTypeVisitor__mpropdef(val* self) { -val* var /* : MPropDef */; -val* var1 /* : MPropDef */; -var1 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___64dmpropdef].val; /* @mpropdef on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mpropdef", "src/rapid_type_analysis.nit", 329); -exit(1); -} -var = var1; -RET_LABEL:; -return var; +{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver= (self,p0) on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val = p0; /* _receiver on */ +RET_LABEL1:(void)0; } -/* method rapid_type_analysis#RapidTypeVisitor#mpropdef for (self: Object): MPropDef */ -val* VIRTUAL_rapid_type_analysis__RapidTypeVisitor__mpropdef(val* self) { -val* var /* : MPropDef */; -val* var1 /* : MPropDef */; -var1 = rapid_type_analysis__RapidTypeVisitor__mpropdef(self); -var = var1; RET_LABEL:; -return var; } /* method rapid_type_analysis#RapidTypeVisitor#mpropdef= for (self: RapidTypeVisitor, MPropDef) */ void rapid_type_analysis__RapidTypeVisitor__mpropdef_61d(val* self, val* p0) { -self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___64dmpropdef].val = p0; /* @mpropdef on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___mpropdef].val = p0; /* _mpropdef on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#mpropdef= for (self: Object, MPropDef) */ void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__mpropdef_61d(val* self, val* p0) { -rapid_type_analysis__RapidTypeVisitor__mpropdef_61d(self, p0); +{ /* Inline rapid_type_analysis#RapidTypeVisitor#mpropdef= (self,p0) on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___mpropdef].val = p0; /* _mpropdef on */ +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#init for (self: RapidTypeVisitor, RapidTypeAnalysis, MClassType, MPropDef) */ @@ -1990,25 +4965,45 @@ val* var_analysis /* var analysis: RapidTypeAnalysis */; val* var_receiver /* var receiver: MClassType */; val* var_mpropdef /* var mpropdef: MPropDef */; short int var /* : Bool */; -short int var1 /* : Bool */; +short int var4 /* : Bool */; +{ +((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on */; +} var_analysis = p0; var_receiver = p1; var_mpropdef = p2; -((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on */; -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis_61d]))(self, var_analysis) /* analysis= on */; -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver_61d]))(self, var_receiver) /* receiver= on */; -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis= (self,var_analysis) on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val = var_analysis; /* _analysis on */ +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver= (self,var_receiver) on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val = var_receiver; /* _receiver on */ +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#mpropdef= (self,var_mpropdef) on */ +self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___mpropdef].val = var_mpropdef; /* _mpropdef on */ +RET_LABEL3:(void)0; +} +} +{ var = ((short int (*)(val*))(var_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_receiver) /* need_anchor on */; -var1 = !var; -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/rapid_type_analysis.nit", 336); -exit(1); +} +var4 = !var; +if (unlikely(!var4)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 449); +show_backtrace(1); } RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#init for (self: Object, RapidTypeAnalysis, MClassType, MPropDef) */ void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__init(val* self, val* p0, val* p1, val* p2) { -rapid_type_analysis__RapidTypeVisitor__init(self, p0, p1, p2); +rapid_type_analysis__RapidTypeVisitor__init(self, p0, p1, p2); /* Direct call rapid_type_analysis#RapidTypeVisitor#init on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#visit for (self: RapidTypeVisitor, ANode) */ @@ -2018,15 +5013,23 @@ short int var /* : Bool */; int cltype; int idtype; val* var1 /* : nullable MType */; +val* var3 /* : nullable MType */; val* var_implicit_cast_to /* var implicit_cast_to: nullable MType */; -val* var2 /* : null */; -short int var3 /* : Bool */; -short int var4 /* : Bool */; -int cltype5; -int idtype6; -short int var7 /* : Bool */; +val* var4 /* : null */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +int cltype12; +int idtype13; +short int var14 /* : Bool */; var_n = p0; +{ ((void (*)(val*, val*))(var_n->class->vft[COLOR_rapid_type_analysis__ANode__accept_rapid_type_visitor]))(var_n, self) /* accept_rapid_type_visitor on */; +} /* isa AExpr */ cltype = type_parser_nodes__AExpr.color; idtype = type_parser_nodes__AExpr.id; @@ -2036,38 +5039,62 @@ var = 0; var = var_n->type->type_table[cltype] == idtype; } if (var){ -var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_typing__AExpr__implicit_cast_to]))(var_n) /* implicit_cast_to on */; +{ +{ /* Inline typing#AExpr#implicit_cast_to (var_n) on */ +var3 = var_n->attrs[COLOR_typing__AExpr___implicit_cast_to].val; /* _implicit_cast_to on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} var_implicit_cast_to = var1; -var2 = NULL; +var4 = NULL; if (var_implicit_cast_to == NULL) { -var3 = 0; /* is null */ +var5 = 0; /* is null */ } else { -var3 = 1; /* arg is null and recv is not */ +var5 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_implicit_cast_to,var4) on */ +var_other = var4; +{ +var9 = ((short int (*)(val*, val*))(var_implicit_cast_to->class->vft[COLOR_kernel__Object___61d_61d]))(var_implicit_cast_to, var_other) /* == on */; +var8 = var9; +} +var10 = !var8; +var6 = var10; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +var5 = var6; +} +if (var5){ +{ +rapid_type_analysis__RapidTypeVisitor__add_cast_type(self, var_implicit_cast_to); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on */ } -if (var3){ -((void (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_cast_type]))(self, var_implicit_cast_to) /* add_cast_type on */; } else { } } else { } /* isa AAnnotations */ -cltype5 = type_parser_nodes__AAnnotations.color; -idtype6 = type_parser_nodes__AAnnotations.id; -if(cltype5 >= var_n->type->table_size) { -var4 = 0; +cltype12 = type_parser_nodes__AAnnotations.color; +idtype13 = type_parser_nodes__AAnnotations.id; +if(cltype12 >= var_n->type->table_size) { +var11 = 0; } else { -var4 = var_n->type->type_table[cltype5] == idtype6; +var11 = var_n->type->type_table[cltype12] == idtype13; } -var7 = !var4; -if (var7){ +var14 = !var11; +if (var14){ +{ ((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__visit_all]))(var_n, self) /* visit_all on */; +} } else { } RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#visit for (self: Object, ANode) */ void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__visit(val* self, val* p0) { -rapid_type_analysis__RapidTypeVisitor__visit(self, p0); +rapid_type_analysis__RapidTypeVisitor__visit(self, p0); /* Direct call rapid_type_analysis#RapidTypeVisitor#visit on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#cleanup_type for (self: RapidTypeVisitor, MType): nullable MClassType */ @@ -2075,72 +5102,102 @@ val* rapid_type_analysis__RapidTypeVisitor__cleanup_type(val* self, val* p0) { val* var /* : nullable MClassType */; val* var_mtype /* var mtype: MType */; val* var1 /* : RapidTypeAnalysis */; -val* var2 /* : MModule */; -val* var3 /* : MClassType */; -val* var4 /* : MType */; -short int var5 /* : Bool */; -int cltype; -int idtype; -val* var6 /* : null */; -short int var7 /* : Bool */; -int cltype8; -int idtype9; +val* var3 /* : RapidTypeAnalysis */; +val* var4 /* : MModule */; +val* var6 /* : MModule */; +val* var7 /* : MClassType */; +val* var9 /* : MClassType */; val* var10 /* : MType */; short int var11 /* : Bool */; -int cltype12; -int idtype13; +int cltype; +int idtype; +val* var12 /* : null */; +val* var13 /* : MType */; short int var14 /* : Bool */; -short int var15 /* : Bool */; +int cltype15; +int idtype16; +short int var17 /* : Bool */; +short int var18 /* : Bool */; var_mtype = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(self) /* analysis on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(var1) /* mainmodule on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(self) /* receiver on */; -var4 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var2, var3) /* anchor_to on */; -var_mtype = var4; +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var1) on */ +var6 = var1->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (self) on */ +var9 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +var10 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var4, var7) /* anchor_to on */; +} +var_mtype = var10; /* isa MNullType */ cltype = type_model__MNullType.color; idtype = type_model__MNullType.id; if(cltype >= var_mtype->type->table_size) { -var5 = 0; +var11 = 0; } else { -var5 = var_mtype->type->type_table[cltype] == idtype; +var11 = var_mtype->type->type_table[cltype] == idtype; } -if (var5){ -var6 = NULL; -var = var6; +if (var11){ +var12 = NULL; +var = var12; goto RET_LABEL; } else { } -/* isa MNullableType */ -cltype8 = type_model__MNullableType.color; -idtype9 = type_model__MNullableType.id; -if(cltype8 >= var_mtype->type->table_size) { -var7 = 0; -} else { -var7 = var_mtype->type->type_table[cltype8] == idtype9; -} -if (var7){ -var10 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on */; -var_mtype = var10; -} else { +{ +var13 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on */; } +var_mtype = var13; /* isa MClassType */ -cltype12 = type_model__MClassType.color; -idtype13 = type_model__MClassType.id; -if(cltype12 >= var_mtype->type->table_size) { -var11 = 0; +cltype15 = type_model__MClassType.color; +idtype16 = type_model__MClassType.id; +if(cltype15 >= var_mtype->type->table_size) { +var14 = 0; } else { -var11 = var_mtype->type->type_table[cltype12] == idtype13; +var14 = var_mtype->type->type_table[cltype15] == idtype16; +} +if (unlikely(!var14)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 471); +show_backtrace(1); } -if (!var11) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/rapid_type_analysis.nit", 358); -exit(1); +{ +var17 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on */; } -var14 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on */; -var15 = !var14; -if (!var15) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/rapid_type_analysis.nit", 359); -exit(1); +var18 = !var17; +if (unlikely(!var18)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 472); +show_backtrace(1); } var = var_mtype; goto RET_LABEL; @@ -2161,13 +5218,39 @@ val* rapid_type_analysis__RapidTypeVisitor__get_class(val* self, val* p0) { val* var /* : MClass */; val* var_name /* var name: String */; val* var1 /* : RapidTypeAnalysis */; -val* var2 /* : MModule */; -val* var3 /* : MClass */; +val* var3 /* : RapidTypeAnalysis */; +val* var4 /* : MModule */; +val* var6 /* : MModule */; +val* var7 /* : MClass */; var_name = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(self) /* analysis on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(var1) /* mainmodule on */; -var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_model__MModule__get_primitive_class]))(var2, var_name) /* get_primitive_class on */; -var = var3; +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var3 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var1) on */ +var6 = var1->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +var7 = model__MModule__get_primitive_class(var4, var_name); +} +var = var7; goto RET_LABEL; RET_LABEL:; return var; @@ -2190,16 +5273,29 @@ val* var1 /* : nullable MClassType */; val* var_mtype /* var mtype: nullable MClassType */; val* var2 /* : null */; short int var3 /* : Bool */; -val* var4 /* : RapidTypeAnalysis */; -val* var5 /* : ModelBuilder */; -val* var6 /* : nullable ANode */; -val* var7 /* : MClass */; -val* var8 /* : RapidTypeAnalysis */; -val* var9 /* : MModule */; -val* var10 /* : MMethod */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +short int var8 /* : Bool */; +val* var9 /* : RapidTypeAnalysis */; +val* var11 /* : RapidTypeAnalysis */; +val* var12 /* : ModelBuilder */; +val* var14 /* : ModelBuilder */; +val* var15 /* : nullable ANode */; +val* var17 /* : nullable ANode */; +val* var18 /* : MClass */; +val* var20 /* : MClass */; +val* var21 /* : RapidTypeAnalysis */; +val* var23 /* : RapidTypeAnalysis */; +val* var24 /* : MModule */; +val* var26 /* : MModule */; +val* var27 /* : MMethod */; var_recv = p0; var_name = p1; -var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__cleanup_type]))(self, var_recv) /* cleanup_type on */; +{ +var1 = rapid_type_analysis__RapidTypeVisitor__cleanup_type(self, var_recv); +} var_mtype = var1; var2 = NULL; if (var_mtype == NULL) { @@ -2207,22 +5303,101 @@ var3 = 0; /* is null */ } else { var3 = 1; /* arg is null and recv is not */ } -if (!var3) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/rapid_type_analysis.nit", 371); -exit(1); +if (0) { +{ /* Inline kernel#Object#!= (var_mtype,var2) on */ +var_other = var2; +{ +var7 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_other) /* == on */; +var6 = var7; } -var4 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(self) /* analysis on */; -var5 = ((val* (*)(val*))(var4->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__modelbuilder]))(var4) /* modelbuilder on */; -var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__current_node]))(self) /* current_node on */; -if (var6 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 372); -exit(1); -} -var7 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on */; -var8 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(self) /* analysis on */; -var9 = ((val* (*)(val*))(var8->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(var8) /* mainmodule on */; -var10 = ((val* (*)(val*, val*, val*, val*, val*))(var5->class->vft[COLOR_modelbuilder__ModelBuilder__force_get_primitive_method]))(var5, var6, var_name, var7, var9) /* force_get_primitive_method on */; -var = var10; +var8 = !var6; +var4 = var8; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +var3 = var4; +} +if (unlikely(!var3)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 484); +show_backtrace(1); +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var11 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (var9) on */ +var14 = var9->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline parser_nodes#Visitor#current_node (self) on */ +var17 = self->attrs[COLOR_parser_nodes__Visitor___current_node].val; /* _current_node on */ +var15 = var17; +RET_LABEL16:(void)0; +} +} +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 485); +show_backtrace(1); +} +{ +{ /* Inline model#MClassType#mclass (var_mtype) on */ +var20 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var23 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var21) on */ +var26 = var21->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +var27 = modelbuilder__ModelBuilder__force_get_primitive_method(var12, var15, var_name, var18, var24); +} +var = var27; goto RET_LABEL; RET_LABEL:; return var; @@ -2240,16 +5415,42 @@ return var; void rapid_type_analysis__RapidTypeVisitor__add_type(val* self, val* p0) { val* var_mtype /* var mtype: MClassType */; val* var /* : RapidTypeAnalysis */; -val* var1 /* : MClassType */; +val* var2 /* : RapidTypeAnalysis */; +val* var3 /* : MClassType */; +val* var5 /* : MClassType */; var_mtype = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(self) /* analysis on */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(self) /* receiver on */; -((void (*)(val*, val*, val*))(var->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_new]))(var, var1, var_mtype) /* add_new on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var2 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (self) on */ +var5 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_new(var, var3, var_mtype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on */ +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#add_type for (self: Object, MClassType) */ void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__add_type(val* self, val* p0) { -rapid_type_analysis__RapidTypeVisitor__add_type(self, p0); +rapid_type_analysis__RapidTypeVisitor__add_type(self, p0); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send for (self: RapidTypeVisitor, MType, MMethod) */ @@ -2257,60 +5458,329 @@ void rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(val* self, val* val* var_mtype /* var mtype: MType */; val* var_mproperty /* var mproperty: MMethod */; val* var /* : RapidTypeAnalysis */; -short int var1 /* : Bool */; +val* var2 /* : RapidTypeAnalysis */; +val* var3 /* : HashSet[MMethod] */; +val* var5 /* : HashSet[MMethod] */; +val* var6 /* : RapidTypeAnalysis */; +val* var8 /* : RapidTypeAnalysis */; +short int var9 /* : Bool */; int cltype; int idtype; +const char* var_class_name; var_mtype = p0; var_mproperty = p1; -var = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(self) /* analysis on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var2 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methods (var) on */ +var5 = var->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 75); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +hash_collection__HashSet__add(var3, var_mproperty); /* Direct call hash_collection#HashSet#add on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var8 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(cltype >= var_mtype->type->table_size) { -var1 = 0; +var9 = 0; } else { -var1 = var_mtype->type->type_table[cltype] == idtype; +var9 = var_mtype->type->type_table[cltype] == idtype; } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 377); -exit(1); +if (unlikely(!var9)) { +var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 493); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeAnalysis__try_send(var6, var_mtype, var_mproperty); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on */ } -((void (*)(val*, val*, val*))(var->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__try_send]))(var, var_mtype, var_mproperty) /* try_send on */; RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send for (self: Object, MType, MMethod) */ void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(val* self, val* p0, val* p1) { -rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(self, p0, p1); -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeVisitor#add_send for (self: RapidTypeVisitor, MType, MMethod) */ -void rapid_type_analysis__RapidTypeVisitor__add_send(val* self, val* p0, val* p1) { -val* var_mtype /* var mtype: MType */; -val* var_mproperty /* var mproperty: MMethod */; -val* var /* : RapidTypeAnalysis */; -var_mtype = p0; -var_mproperty = p1; -var = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(self) /* analysis on */; -((void (*)(val*, val*, val*))(var->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_send]))(var, var_mtype, var_mproperty) /* add_send on */; -RET_LABEL:; -} -/* method rapid_type_analysis#RapidTypeVisitor#add_send for (self: Object, MType, MMethod) */ -void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__add_send(val* self, val* p0, val* p1) { -rapid_type_analysis__RapidTypeVisitor__add_send(self, p0, p1); +rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(self, p0, p1); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on */ RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#add_cast_type for (self: RapidTypeVisitor, MType) */ void rapid_type_analysis__RapidTypeVisitor__add_cast_type(val* self, val* p0) { val* var_mtype /* var mtype: MType */; val* var /* : RapidTypeAnalysis */; +val* var2 /* : RapidTypeAnalysis */; var_mtype = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(self) /* analysis on */; -((void (*)(val*, val*))(var->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_cast]))(var, var_mtype) /* add_cast on */; +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var2 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_cast(var, var_mtype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_cast on */ +} RET_LABEL:; } /* method rapid_type_analysis#RapidTypeVisitor#add_cast_type for (self: Object, MType) */ void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__add_cast_type(val* self, val* p0) { -rapid_type_analysis__RapidTypeVisitor__add_cast_type(self, p0); +rapid_type_analysis__RapidTypeVisitor__add_cast_type(self, p0); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on */ +RET_LABEL:; +} +/* method rapid_type_analysis#RapidTypeVisitor#add_callsite for (self: RapidTypeVisitor, nullable CallSite) */ +void rapid_type_analysis__RapidTypeVisitor__add_callsite(val* self, val* p0) { +val* var_callsite /* var callsite: nullable CallSite */; +val* var /* : null */; +short int var1 /* : Bool */; +short int var2 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; +val* var7 /* : MMethodDef */; +val* var9 /* : MMethodDef */; +val* var10 /* : Array[MProperty] */; +val* var12 /* : Array[MProperty] */; +val* var_ /* var : Array[MProperty] */; +val* var13 /* : ArrayIterator[nullable Object] */; +val* var_14 /* var : ArrayIterator[MProperty] */; +short int var15 /* : Bool */; +val* var16 /* : nullable Object */; +val* var_m /* var m: MProperty */; +short int var17 /* : Bool */; +int cltype; +int idtype; +val* var18 /* : RapidTypeAnalysis */; +val* var20 /* : RapidTypeAnalysis */; +val* var21 /* : MType */; +val* var23 /* : MType */; +val* var25 /* : RapidTypeAnalysis */; +val* var27 /* : RapidTypeAnalysis */; +val* var28 /* : MType */; +val* var30 /* : MType */; +val* var31 /* : MMethod */; +val* var33 /* : MMethod */; +val* var34 /* : RapidTypeAnalysis */; +val* var36 /* : RapidTypeAnalysis */; +val* var37 /* : HashSet[CallSite] */; +val* var39 /* : HashSet[CallSite] */; +var_callsite = p0; +var = NULL; +if (var_callsite == NULL) { +var1 = 0; /* is null */ +} else { +var1 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_callsite,var) on */ +var_other = var; +{ +var5 = ((short int (*)(val*, val*))(var_callsite->class->vft[COLOR_kernel__Object___61d_61d]))(var_callsite, var_other) /* == on */; +var4 = var5; +} +var6 = !var4; +var2 = var6; +goto RET_LABEL3; +RET_LABEL3:(void)0; +} +var1 = var2; +} +if (var1){ +{ +{ /* Inline typing#CallSite#mpropdef (var_callsite) on */ +var9 = var_callsite->attrs[COLOR_typing__CallSite___mpropdef].val; /* _mpropdef on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef"); +PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 486); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline model#MMethodDef#initializers (var7) on */ +var12 = var7->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +var_ = var10; +{ +var13 = array__AbstractArrayRead__iterator(var_); +} +var_14 = var13; +for(;;) { +{ +var15 = array__ArrayIterator__is_ok(var_14); +} +if (var15){ +{ +var16 = array__ArrayIterator__item(var_14); +} +var_m = var16; +/* isa MMethod */ +cltype = type_model__MMethod.color; +idtype = type_model__MMethod.id; +if(cltype >= var_m->type->table_size) { +var17 = 0; +} else { +var17 = var_m->type->type_table[cltype] == idtype; +} +if (var17){ +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var20 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +{ /* Inline typing#CallSite#recv (var_callsite) on */ +var23 = var_callsite->attrs[COLOR_typing__CallSite___recv].val; /* _recv on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv"); +PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 469); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_send(var18, var21, var_m); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on */ +} +} else { +} +{ +array__ArrayIterator__next(var_14); /* Direct call array#ArrayIterator#next on */ +} +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +{ +{ /* Inline abstract_collection#Iterator#finish (var_14) on */ +RET_LABEL24:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var27 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +{ +{ /* Inline typing#CallSite#recv (var_callsite) on */ +var30 = var_callsite->attrs[COLOR_typing__CallSite___recv].val; /* _recv on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv"); +PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 469); +show_backtrace(1); +} +var28 = var30; +RET_LABEL29:(void)0; +} +} +{ +{ /* Inline typing#CallSite#mproperty (var_callsite) on */ +var33 = var_callsite->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on */ +if (unlikely(var33 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483); +show_backtrace(1); +} +var31 = var33; +RET_LABEL32:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_send(var25, var28, var31); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on */ +var36 = self->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var36 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var34 = var36; +RET_LABEL35:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_callsites (var34) on */ +var39 = var34->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_callsites].val; /* _live_callsites on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_callsites"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 78); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +{ +hash_collection__HashSet__add(var37, var_callsite); /* Direct call hash_collection#HashSet#add on */ +} +} else { +} +RET_LABEL:; +} +/* method rapid_type_analysis#RapidTypeVisitor#add_callsite for (self: Object, nullable CallSite) */ +void VIRTUAL_rapid_type_analysis__RapidTypeVisitor__add_callsite(val* self, val* p0) { +rapid_type_analysis__RapidTypeVisitor__add_callsite(self, p0); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ RET_LABEL:; } /* method rapid_type_analysis#ANode#accept_rapid_type_visitor for (self: ANode, RapidTypeVisitor) */ @@ -2321,207 +5791,311 @@ RET_LABEL:; } /* method rapid_type_analysis#ANode#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ANode__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ANode__accept_rapid_type_visitor(self, p0); +val* var_v /* var v: RapidTypeVisitor */; +{ /* Inline rapid_type_analysis#ANode#accept_rapid_type_visitor (self,p0) on */ +var_v = p0; +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method rapid_type_analysis#AIntExpr#accept_rapid_type_visitor for (self: AIntExpr, RapidTypeVisitor) */ void rapid_type_analysis__AIntExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; -short int var1 /* : Bool */; +val* var2 /* : nullable MType */; +short int var3 /* : Bool */; int cltype; int idtype; +const char* var_class_name; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(var == NULL) { -var1 = 0; +var3 = 0; } else { if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 395); -exit(1); +if (unlikely(!var3)) { +var_class_name = var == NULL ? "null" : var->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 522); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ } -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var) /* add_type on */; RET_LABEL:; } /* method rapid_type_analysis#AIntExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AIntExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AIntExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AIntExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AIntExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AFloatExpr#accept_rapid_type_visitor for (self: AFloatExpr, RapidTypeVisitor) */ void rapid_type_analysis__AFloatExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; -short int var1 /* : Bool */; +val* var2 /* : nullable MType */; +short int var3 /* : Bool */; int cltype; int idtype; +const char* var_class_name; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(var == NULL) { -var1 = 0; +var3 = 0; } else { if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 402); -exit(1); +if (unlikely(!var3)) { +var_class_name = var == NULL ? "null" : var->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 529); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ } -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var) /* add_type on */; RET_LABEL:; } /* method rapid_type_analysis#AFloatExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AFloatExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AFloatExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AFloatExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AFloatExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#ACharExpr#accept_rapid_type_visitor for (self: ACharExpr, RapidTypeVisitor) */ void rapid_type_analysis__ACharExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; -short int var1 /* : Bool */; +val* var2 /* : nullable MType */; +short int var3 /* : Bool */; int cltype; int idtype; +const char* var_class_name; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(var == NULL) { -var1 = 0; +var3 = 0; } else { if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 409); -exit(1); +if (unlikely(!var3)) { +var_class_name = var == NULL ? "null" : var->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 536); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ } -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var) /* add_type on */; RET_LABEL:; } /* method rapid_type_analysis#ACharExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ACharExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ACharExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__ACharExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#ACharExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AArrayExpr#accept_rapid_type_visitor for (self: AArrayExpr, RapidTypeVisitor) */ void rapid_type_analysis__AArrayExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; -short int var1 /* : Bool */; +val* var2 /* : nullable MType */; +short int var3 /* : Bool */; int cltype; int idtype; +const char* var_class_name; val* var_mtype /* var mtype: MClassType */; -val* var2 /* : RapidTypeAnalysis */; -val* var3 /* : MModule */; +val* var4 /* : RapidTypeAnalysis */; +val* var6 /* : RapidTypeAnalysis */; +val* var7 /* : MModule */; +val* var9 /* : MModule */; static val* varonce; -val* var4 /* : String */; -char* var5 /* : NativeString */; -long var6 /* : Int */; -val* var7 /* : String */; -val* var8 /* : MClass */; -val* var9 /* : Array[MType] */; -val* var10 /* : nullable Object */; -val* var11 /* : Array[MType] */; +val* var10 /* : String */; +char* var11 /* : NativeString */; long var12 /* : Int */; -val* var13 /* : NativeArray[MType] */; -val* var14 /* : MClassType */; +val* var13 /* : FlatString */; +val* var14 /* : MClass */; +val* var15 /* : Array[MType] */; +long var16 /* : Int */; +val* var_ /* var : Array[MType] */; +val* var17 /* : Array[MType] */; +val* var19 /* : Array[MType] */; +val* var20 /* : nullable Object */; +val* var21 /* : MClassType */; val* var_native /* var native: MClassType */; -val* var15 /* : nullable MClassType */; -static val* varonce16; -val* var17 /* : String */; -char* var18 /* : NativeString */; -long var19 /* : Int */; -val* var20 /* : String */; -val* var21 /* : MMethod */; +val* var22 /* : nullable MClassType */; +static val* varonce23; +val* var24 /* : String */; +char* var25 /* : NativeString */; +long var26 /* : Int */; +val* var27 /* : FlatString */; +val* var28 /* : MMethod */; val* var_prop /* var prop: MMethod */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(var == NULL) { -var1 = 0; +var3 = 0; } else { if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 416); -exit(1); +if (unlikely(!var3)) { +var_class_name = var == NULL ? "null" : var->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 543); +show_backtrace(1); } var_mtype = var; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_mtype) /* add_type on */; -var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(var_v) /* analysis on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__mainmodule]))(var2) /* mainmodule on */; +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_mtype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (var_v) on */ +var6 = var_v->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var4) on */ +var9 = var4->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} if (varonce) { -var4 = varonce; -} else { -var5 = "NativeArray"; -var6 = 11; -var7 = string__NativeString__to_s_with_length(var5, var6); -var4 = var7; -varonce = var4; -} -var8 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MModule__get_primitive_class]))(var3, var4) /* get_primitive_class on */; -var9 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__arguments]))(var_mtype) /* arguments on */; -var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__first]))(var9) /* first on */; -var11 = NEW_array__Array(&type_array__Arraymodel__MType); -{ /* var11 = array_instance Array[MType] */ -var12 = 1; -var13 = NEW_array__NativeArray(var12, &type_array__NativeArraymodel__MType); -((struct instance_array__NativeArray*)var13)->values[0] = (val*) var10; -((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on */; -CHECK_NEW_array__Array(var11); -} -var14 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_model__MClass__get_mtype]))(var8, var11) /* get_mtype on */; -var_native = var14; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_native) /* add_type on */; -var15 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__cleanup_type]))(var_v, var_mtype) /* cleanup_type on */; -if (var15 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 420); -exit(1); -} -var_mtype = var15; -if (varonce16) { -var17 = varonce16; -} else { -var18 = "with_native"; -var19 = 11; -var20 = string__NativeString__to_s_with_length(var18, var19); -var17 = var20; -varonce16 = var17; -} -var21 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_mtype, var17) /* get_method on */; -var_prop = var21; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var_mtype, var_prop) /* add_monomorphic_send on */; +var10 = varonce; +} else { +var11 = "NativeArray"; +var12 = 11; +var13 = string__NativeString__to_s_with_length(var11, var12); +var10 = var13; +varonce = var10; +} +{ +var14 = model__MModule__get_primitive_class(var7, var10); +} +var15 = NEW_array__Array(&type_array__Arraymodel__MType); +var16 = 1; +{ +array__Array__with_capacity(var15, var16); /* Direct call array#Array#with_capacity on */ +} +var_ = var15; +{ +{ /* Inline model#MClassType#arguments (var_mtype) on */ +var19 = var_mtype->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on */ +if (unlikely(var19 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996); +show_backtrace(1); +} +var17 = var19; +RET_LABEL18:(void)0; +} +} +{ +var20 = abstract_collection__SequenceRead__first(var17); +} +{ +array__AbstractArray__push(var_, var20); /* Direct call array#AbstractArray#push on */ +} +{ +var21 = model__MClass__get_mtype(var14, var_); +} +var_native = var21; +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +{ +var22 = rapid_type_analysis__RapidTypeVisitor__cleanup_type(var_v, var_mtype); +} +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 547); +show_backtrace(1); +} +var_mtype = var22; +if (varonce23) { +var24 = varonce23; +} else { +var25 = "with_native"; +var26 = 11; +var27 = string__NativeString__to_s_with_length(var25, var26); +var24 = var27; +varonce23 = var24; +} +{ +var28 = rapid_type_analysis__RapidTypeVisitor__get_method(var_v, var_mtype, var24); +} +var_prop = var28; +{ +rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(var_v, var_mtype, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on */ +} RET_LABEL:; } /* method rapid_type_analysis#AArrayExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AArrayExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AArrayExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AArrayExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AArrayExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AStringFormExpr#accept_rapid_type_visitor for (self: AStringFormExpr, RapidTypeVisitor) */ @@ -2531,16 +6105,17 @@ static val* varonce; val* var /* : String */; char* var1 /* : NativeString */; long var2 /* : Int */; -val* var3 /* : String */; +val* var3 /* : FlatString */; val* var4 /* : MClass */; val* var5 /* : MClassType */; +val* var7 /* : MClassType */; val* var_native /* var native: MClassType */; -static val* varonce6; -val* var7 /* : String */; -char* var8 /* : NativeString */; -long var9 /* : Int */; -val* var10 /* : String */; -val* var11 /* : MMethod */; +static val* varonce8; +val* var9 /* : String */; +char* var10 /* : NativeString */; +long var11 /* : Int */; +val* var12 /* : FlatString */; +val* var13 /* : MMethod */; val* var_prop /* var prop: MMethod */; var_v = p0; if (varonce) { @@ -2552,27 +6127,46 @@ var3 = string__NativeString__to_s_with_length(var1, var2); var = var3; varonce = var; } -var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_class]))(var_v, var) /* get_class on */; -var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MClass__mclass_type]))(var4) /* mclass_type on */; +{ +var4 = rapid_type_analysis__RapidTypeVisitor__get_class(var_v, var); +} +{ +{ /* Inline model#MClass#mclass_type (var4) on */ +var7 = var4->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} var_native = var5; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_native) /* add_type on */; -if (varonce6) { -var7 = varonce6; +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +if (varonce8) { +var9 = varonce8; } else { -var8 = "to_s"; -var9 = 4; -var10 = string__NativeString__to_s_with_length(var8, var9); -var7 = var10; -varonce6 = var7; +var10 = "to_s_with_length"; +var11 = 16; +var12 = string__NativeString__to_s_with_length(var10, var11); +var9 = var12; +varonce8 = var9; +} +{ +var13 = rapid_type_analysis__RapidTypeVisitor__get_method(var_v, var_native, var9); +} +var_prop = var13; +{ +rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(var_v, var_native, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on */ } -var11 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_native, var7) /* get_method on */; -var_prop = var11; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var_native, var_prop) /* add_monomorphic_send on */; RET_LABEL:; } /* method rapid_type_analysis#AStringFormExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AStringFormExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AStringFormExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AStringFormExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AStringFormExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#ASuperstringExpr#accept_rapid_type_visitor for (self: ASuperstringExpr, RapidTypeVisitor) */ @@ -2582,50 +6176,52 @@ static val* varonce; val* var /* : String */; char* var1 /* : NativeString */; long var2 /* : Int */; -val* var3 /* : String */; +val* var3 /* : FlatString */; val* var4 /* : MClass */; -static val* varonce5; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : String */; -val* var10 /* : MClass */; -val* var11 /* : MClassType */; -val* var12 /* : Array[MClassType] */; -long var13 /* : Int */; -val* var14 /* : NativeArray[MClassType] */; +val* var5 /* : Array[MClassType] */; +long var6 /* : Int */; +val* var_ /* var : Array[MClassType] */; +static val* varonce7; +val* var8 /* : String */; +char* var9 /* : NativeString */; +long var10 /* : Int */; +val* var11 /* : FlatString */; +val* var12 /* : MClass */; +val* var13 /* : MClassType */; val* var15 /* : MClassType */; +val* var16 /* : MClassType */; val* var_arraytype /* var arraytype: MClassType */; -static val* varonce16; -val* var17 /* : String */; -char* var18 /* : NativeString */; -long var19 /* : Int */; -val* var20 /* : String */; -val* var21 /* : MClass */; -static val* varonce22; -val* var23 /* : String */; -char* var24 /* : NativeString */; -long var25 /* : Int */; -val* var26 /* : String */; -val* var27 /* : MClass */; -val* var28 /* : MClassType */; -val* var29 /* : Array[MClassType] */; -long var30 /* : Int */; -val* var31 /* : NativeArray[MClassType] */; +static val* varonce17; +val* var18 /* : String */; +char* var19 /* : NativeString */; +long var20 /* : Int */; +val* var21 /* : FlatString */; +val* var22 /* : MClass */; +val* var23 /* : Array[MClassType] */; +long var24 /* : Int */; +val* var_25 /* var : Array[MClassType] */; +static val* varonce26; +val* var27 /* : String */; +char* var28 /* : NativeString */; +long var29 /* : Int */; +val* var30 /* : FlatString */; +val* var31 /* : MClass */; val* var32 /* : MClassType */; -static val* varonce33; -val* var34 /* : String */; -char* var35 /* : NativeString */; -long var36 /* : Int */; +val* var34 /* : MClassType */; +val* var35 /* : MClassType */; +static val* varonce36; val* var37 /* : String */; -val* var38 /* : MMethod */; +char* var38 /* : NativeString */; +long var39 /* : Int */; +val* var40 /* : FlatString */; +val* var41 /* : MMethod */; val* var_prop /* var prop: MMethod */; -static val* varonce39; -val* var40 /* : String */; -char* var41 /* : NativeString */; -long var42 /* : Int */; +static val* varonce42; val* var43 /* : String */; -val* var44 /* : MMethod */; +char* var44 /* : NativeString */; +long var45 /* : Int */; +val* var46 /* : FlatString */; +val* var47 /* : MMethod */; val* var_prop2 /* var prop2: MMethod */; var_v = p0; if (varonce) { @@ -2637,792 +6233,877 @@ var3 = string__NativeString__to_s_with_length(var1, var2); var = var3; varonce = var; } -var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_class]))(var_v, var) /* get_class on */; -if (varonce5) { -var6 = varonce5; -} else { -var7 = "Object"; -var8 = 6; -var9 = string__NativeString__to_s_with_length(var7, var8); -var6 = var9; -varonce5 = var6; -} -var10 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_class]))(var_v, var6) /* get_class on */; -var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClass__mclass_type]))(var10) /* mclass_type on */; -var12 = NEW_array__Array(&type_array__Arraymodel__MClassType); -{ /* var12 = array_instance Array[MClassType] */ -var13 = 1; -var14 = NEW_array__NativeArray(var13, &type_array__NativeArraymodel__MClassType); -((struct instance_array__NativeArray*)var14)->values[0] = (val*) var11; -((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on */; -CHECK_NEW_array__Array(var12); -} -var15 = ((val* (*)(val*, val*))(var4->class->vft[COLOR_model__MClass__get_mtype]))(var4, var12) /* get_mtype on */; -var_arraytype = var15; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_arraytype) /* add_type on */; -if (varonce16) { -var17 = varonce16; -} else { -var18 = "NativeArray"; -var19 = 11; -var20 = string__NativeString__to_s_with_length(var18, var19); -var17 = var20; -varonce16 = var17; -} -var21 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_class]))(var_v, var17) /* get_class on */; -if (varonce22) { -var23 = varonce22; +{ +var4 = rapid_type_analysis__RapidTypeVisitor__get_class(var_v, var); +} +var5 = NEW_array__Array(&type_array__Arraymodel__MClassType); +var6 = 1; +{ +array__Array__with_capacity(var5, var6); /* Direct call array#Array#with_capacity on */ +} +var_ = var5; +if (varonce7) { +var8 = varonce7; } else { -var24 = "Object"; -var25 = 6; -var26 = string__NativeString__to_s_with_length(var24, var25); -var23 = var26; -varonce22 = var23; +var9 = "Object"; +var10 = 6; +var11 = string__NativeString__to_s_with_length(var9, var10); +var8 = var11; +varonce7 = var8; +} +{ +var12 = rapid_type_analysis__RapidTypeVisitor__get_class(var_v, var8); +} +{ +{ /* Inline model#MClass#mclass_type (var12) on */ +var15 = var12->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435); +show_backtrace(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +array__AbstractArray__push(var_, var13); /* Direct call array#AbstractArray#push on */ +} +{ +var16 = model__MClass__get_mtype(var4, var_); +} +var_arraytype = var16; +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_arraytype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +if (varonce17) { +var18 = varonce17; +} else { +var19 = "NativeArray"; +var20 = 11; +var21 = string__NativeString__to_s_with_length(var19, var20); +var18 = var21; +varonce17 = var18; +} +{ +var22 = rapid_type_analysis__RapidTypeVisitor__get_class(var_v, var18); +} +var23 = NEW_array__Array(&type_array__Arraymodel__MClassType); +var24 = 1; +{ +array__Array__with_capacity(var23, var24); /* Direct call array#Array#with_capacity on */ +} +var_25 = var23; +if (varonce26) { +var27 = varonce26; +} else { +var28 = "Object"; +var29 = 6; +var30 = string__NativeString__to_s_with_length(var28, var29); +var27 = var30; +varonce26 = var27; +} +{ +var31 = rapid_type_analysis__RapidTypeVisitor__get_class(var_v, var27); +} +{ +{ /* Inline model#MClass#mclass_type (var31) on */ +var34 = var31->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var34 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435); +show_backtrace(1); +} +var32 = var34; +RET_LABEL33:(void)0; +} +} +{ +array__AbstractArray__push(var_25, var32); /* Direct call array#AbstractArray#push on */ +} +{ +var35 = model__MClass__get_mtype(var22, var_25); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var35); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +if (varonce36) { +var37 = varonce36; +} else { +var38 = "join"; +var39 = 4; +var40 = string__NativeString__to_s_with_length(var38, var39); +var37 = var40; +varonce36 = var37; +} +{ +var41 = rapid_type_analysis__RapidTypeVisitor__get_method(var_v, var_arraytype, var37); +} +var_prop = var41; +{ +rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(var_v, var_arraytype, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on */ +} +if (varonce42) { +var43 = varonce42; +} else { +var44 = "with_native"; +var45 = 11; +var46 = string__NativeString__to_s_with_length(var44, var45); +var43 = var46; +varonce42 = var43; +} +{ +var47 = rapid_type_analysis__RapidTypeVisitor__get_method(var_v, var_arraytype, var43); +} +var_prop2 = var47; +{ +rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(var_v, var_arraytype, var_prop2); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on */ } -var27 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_class]))(var_v, var23) /* get_class on */; -var28 = ((val* (*)(val*))(var27->class->vft[COLOR_model__MClass__mclass_type]))(var27) /* mclass_type on */; -var29 = NEW_array__Array(&type_array__Arraymodel__MClassType); -{ /* var29 = array_instance Array[MClassType] */ -var30 = 1; -var31 = NEW_array__NativeArray(var30, &type_array__NativeArraymodel__MClassType); -((struct instance_array__NativeArray*)var31)->values[0] = (val*) var28; -((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on */; -CHECK_NEW_array__Array(var29); -} -var32 = ((val* (*)(val*, val*))(var21->class->vft[COLOR_model__MClass__get_mtype]))(var21, var29) /* get_mtype on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var32) /* add_type on */; -if (varonce33) { -var34 = varonce33; -} else { -var35 = "join"; -var36 = 4; -var37 = string__NativeString__to_s_with_length(var35, var36); -var34 = var37; -varonce33 = var34; -} -var38 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_arraytype, var34) /* get_method on */; -var_prop = var38; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var_arraytype, var_prop) /* add_monomorphic_send on */; -if (varonce39) { -var40 = varonce39; -} else { -var41 = "with_native"; -var42 = 11; -var43 = string__NativeString__to_s_with_length(var41, var42); -var40 = var43; -varonce39 = var40; -} -var44 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_arraytype, var40) /* get_method on */; -var_prop2 = var44; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var_arraytype, var_prop2) /* add_monomorphic_send on */; RET_LABEL:; } /* method rapid_type_analysis#ASuperstringExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ASuperstringExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ASuperstringExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__ASuperstringExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#ASuperstringExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#ACrangeExpr#accept_rapid_type_visitor for (self: ACrangeExpr, RapidTypeVisitor) */ void rapid_type_analysis__ACrangeExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; -short int var1 /* : Bool */; +val* var2 /* : nullable MType */; +short int var3 /* : Bool */; int cltype; int idtype; +const char* var_class_name; val* var_mtype /* var mtype: MClassType */; -static val* varonce; -val* var2 /* : String */; -char* var3 /* : NativeString */; -long var4 /* : Int */; -val* var5 /* : String */; -val* var6 /* : MMethod */; -val* var_prop /* var prop: MMethod */; +val* var4 /* : nullable CallSite */; +val* var6 /* : nullable CallSite */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(var == NULL) { -var1 = 0; +var3 = 0; } else { if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 452); -exit(1); +if (unlikely(!var3)) { +var_class_name = var == NULL ? "null" : var->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 579); +show_backtrace(1); } var_mtype = var; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_mtype) /* add_type on */; -if (varonce) { -var2 = varonce; -} else { -var3 = "init"; -var4 = 4; -var5 = string__NativeString__to_s_with_length(var3, var4); -var2 = var5; -varonce = var2; +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_mtype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +{ +{ /* Inline typing#ARangeExpr#init_callsite (self) on */ +var6 = self->attrs[COLOR_typing__ARangeExpr___init_callsite].val; /* _init_callsite on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var4); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } -var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_mtype, var2) /* get_method on */; -var_prop = var6; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var_mtype, var_prop) /* add_monomorphic_send on */; RET_LABEL:; } /* method rapid_type_analysis#ACrangeExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ACrangeExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ACrangeExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__ACrangeExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#ACrangeExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AOrangeExpr#accept_rapid_type_visitor for (self: AOrangeExpr, RapidTypeVisitor) */ void rapid_type_analysis__AOrangeExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; -short int var1 /* : Bool */; +val* var2 /* : nullable MType */; +short int var3 /* : Bool */; int cltype; int idtype; +const char* var_class_name; val* var_mtype /* var mtype: MClassType */; -static val* varonce; -val* var2 /* : String */; -char* var3 /* : NativeString */; -long var4 /* : Int */; -val* var5 /* : String */; -val* var6 /* : MMethod */; -val* var_prop /* var prop: MMethod */; +val* var4 /* : nullable CallSite */; +val* var6 /* : nullable CallSite */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(var == NULL) { -var1 = 0; +var3 = 0; } else { if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 462); -exit(1); +if (unlikely(!var3)) { +var_class_name = var == NULL ? "null" : var->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 588); +show_backtrace(1); } var_mtype = var; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_mtype) /* add_type on */; -if (varonce) { -var2 = varonce; -} else { -var3 = "without_last"; -var4 = 12; -var5 = string__NativeString__to_s_with_length(var3, var4); -var2 = var5; -varonce = var2; +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_mtype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +{ +{ /* Inline typing#ARangeExpr#init_callsite (self) on */ +var6 = self->attrs[COLOR_typing__ARangeExpr___init_callsite].val; /* _init_callsite on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var4); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } -var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_mtype, var2) /* get_method on */; -var_prop = var6; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var_mtype, var_prop) /* add_monomorphic_send on */; RET_LABEL:; } /* method rapid_type_analysis#AOrangeExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AOrangeExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AOrangeExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AOrangeExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AOrangeExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#ATrueExpr#accept_rapid_type_visitor for (self: ATrueExpr, RapidTypeVisitor) */ void rapid_type_analysis__ATrueExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; -short int var1 /* : Bool */; +val* var2 /* : nullable MType */; +short int var3 /* : Bool */; int cltype; int idtype; +const char* var_class_name; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(var == NULL) { -var1 = 0; +var3 = 0; } else { if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 472); -exit(1); +if (unlikely(!var3)) { +var_class_name = var == NULL ? "null" : var->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 597); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ } -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var) /* add_type on */; RET_LABEL:; } /* method rapid_type_analysis#ATrueExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ATrueExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ATrueExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__ATrueExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#ATrueExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AFalseExpr#accept_rapid_type_visitor for (self: AFalseExpr, RapidTypeVisitor) */ void rapid_type_analysis__AFalseExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; -short int var1 /* : Bool */; +val* var2 /* : nullable MType */; +short int var3 /* : Bool */; int cltype; int idtype; +const char* var_class_name; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} /* isa MClassType */ cltype = type_model__MClassType.color; idtype = type_model__MClassType.id; if(var == NULL) { -var1 = 0; +var3 = 0; } else { if(cltype >= var->type->table_size) { -var1 = 0; +var3 = 0; } else { -var1 = var->type->type_table[cltype] == idtype; +var3 = var->type->type_table[cltype] == idtype; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 479); -exit(1); +if (unlikely(!var3)) { +var_class_name = var == NULL ? "null" : var->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 604); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ } -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var) /* add_type on */; RET_LABEL:; } /* method rapid_type_analysis#AFalseExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AFalseExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AFalseExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AFalseExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AFalseExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AIsaExpr#accept_rapid_type_visitor for (self: AIsaExpr, RapidTypeVisitor) */ void rapid_type_analysis__AIsaExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; +val* var2 /* : nullable MType */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AIsaExpr__cast_type]))(self) /* cast_type on */; -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 486); -exit(1); +{ +{ /* Inline typing#AIsaExpr#cast_type (self) on */ +var2 = self->attrs[COLOR_typing__AIsaExpr___cast_type].val; /* _cast_type on */ +var = var2; +RET_LABEL1:(void)0; +} +} +if (unlikely(var == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 611); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_cast_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on */ } -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_cast_type]))(var_v, var) /* add_cast_type on */; RET_LABEL:; } /* method rapid_type_analysis#AIsaExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AIsaExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AIsaExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AIsaExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AIsaExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AAsCastExpr#accept_rapid_type_visitor for (self: AAsCastExpr, RapidTypeVisitor) */ void rapid_type_analysis__AAsCastExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; val* var /* : nullable MType */; +val* var2 /* : nullable MType */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 493); -exit(1); +{ +{ /* Inline typing#AExpr#mtype (self) on */ +var2 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on */ +var = var2; +RET_LABEL1:(void)0; +} +} +if (unlikely(var == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 618); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeVisitor__add_cast_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on */ } -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_cast_type]))(var_v, var) /* add_cast_type on */; RET_LABEL:; } /* method rapid_type_analysis#AAsCastExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AAsCastExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AAsCastExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AAsCastExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AAsCastExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#ASendExpr#accept_rapid_type_visitor for (self: ASendExpr, RapidTypeVisitor) */ void rapid_type_analysis__ASendExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; -val* var /* : nullable MMethod */; -val* var_mproperty /* var mproperty: MMethod */; -val* var1 /* : AExpr */; -val* var2 /* : nullable MType */; -val* var_recvtype /* var recvtype: MType */; +val* var /* : nullable CallSite */; +val* var2 /* : nullable CallSite */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__mproperty]))(self) /* mproperty on */; -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 500); -exit(1); +{ +{ /* Inline typing#ASendExpr#callsite (self) on */ +var2 = self->attrs[COLOR_typing__ASendExpr___callsite].val; /* _callsite on */ +var = var2; +RET_LABEL1:(void)0; +} } -var_mproperty = var; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExpr__mtype]))(var1) /* mtype on */; -if (var2 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 501); -exit(1); +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } -var_recvtype = var2; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_recvtype, var_mproperty) /* add_send on */; RET_LABEL:; } /* method rapid_type_analysis#ASendExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ASendExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ASendExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__ASendExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#ASendExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#ASendReassignFormExpr#accept_rapid_type_visitor for (self: ASendReassignFormExpr, RapidTypeVisitor) */ void rapid_type_analysis__ASendReassignFormExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; -val* var /* : nullable MType */; -val* var1 /* : nullable MMethodDef */; -val* var2 /* : MProperty */; -val* var3 /* : nullable MMethod */; -val* var_mproperty /* var mproperty: MMethod */; -val* var4 /* : nullable MMethod */; -val* var_write_mproperty /* var write_mproperty: MMethod */; -val* var5 /* : AExpr */; -short int var6 /* : Bool */; -int cltype; -int idtype; -val* var7 /* : MClassType */; -val* var8 /* : MClassType */; -val* var9 /* : AExpr */; -val* var10 /* : nullable MType */; -val* var_recvtype /* var recvtype: MType */; +val* var /* : nullable CallSite */; +val* var2 /* : nullable CallSite */; +val* var3 /* : nullable CallSite */; +val* var5 /* : nullable CallSite */; +val* var6 /* : nullable CallSite */; +val* var8 /* : nullable CallSite */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type]))(self) /* read_type on */; -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 510); -exit(1); -} -var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_property]))(self) /* reassign_property on */; -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 510); -exit(1); -} else { -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MPropDef__mproperty]))(var1) /* mproperty on */; -} -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var, var2) /* add_send on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__mproperty]))(self) /* mproperty on */; -if (var3 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 511); -exit(1); -} -var_mproperty = var3; -var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_mproperty]))(self) /* write_mproperty on */; -if (var4 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 512); -exit(1); -} -var_write_mproperty = var4; -var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on */; -/* isa ASelfExpr */ -cltype = type_parser_nodes__ASelfExpr.color; -idtype = type_parser_nodes__ASelfExpr.id; -if(cltype >= var5->type->table_size) { -var6 = 0; -} else { -var6 = var5->type->type_table[cltype] == idtype; +{ +{ /* Inline typing#ASendExpr#callsite (self) on */ +var2 = self->attrs[COLOR_typing__ASendExpr___callsite].val; /* _callsite on */ +var = var2; +RET_LABEL1:(void)0; } -if (var6){ -var7 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(var_v) /* receiver on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var7, var_mproperty) /* add_monomorphic_send on */; -var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(var_v) /* receiver on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var8, var_write_mproperty) /* add_monomorphic_send on */; -} else { -var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on */; -var10 = ((val* (*)(val*))(var9->class->vft[COLOR_typing__AExpr__mtype]))(var9) /* mtype on */; -if (var10 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 517); -exit(1); } -var_recvtype = var10; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_recvtype, var_mproperty) /* add_send on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_recvtype, var_write_mproperty) /* add_send on */; +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ +} +{ +{ /* Inline typing#AReassignFormExpr#reassign_callsite (self) on */ +var5 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var3); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ +} +{ +{ /* Inline typing#ASendReassignFormExpr#write_callsite (self) on */ +var8 = self->attrs[COLOR_typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var6); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } RET_LABEL:; } /* method rapid_type_analysis#ASendReassignFormExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ASendReassignFormExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ASendReassignFormExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__ASendReassignFormExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#ASendReassignFormExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AVarReassignExpr#accept_rapid_type_visitor for (self: AVarReassignExpr, RapidTypeVisitor) */ void rapid_type_analysis__AVarReassignExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; -val* var /* : nullable MType */; -val* var1 /* : nullable MMethodDef */; -val* var2 /* : MProperty */; +val* var /* : nullable CallSite */; +val* var2 /* : nullable CallSite */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type]))(self) /* read_type on */; -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 527); -exit(1); +{ +{ /* Inline typing#AReassignFormExpr#reassign_callsite (self) on */ +var2 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on */ +var = var2; +RET_LABEL1:(void)0; } -var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_property]))(self) /* reassign_property on */; -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 527); -exit(1); -} else { -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MPropDef__mproperty]))(var1) /* mproperty on */; } -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var, var2) /* add_send on */; +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ +} RET_LABEL:; } /* method rapid_type_analysis#AVarReassignExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AVarReassignExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AVarReassignExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AVarReassignExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AVarReassignExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AAttrReassignExpr#accept_rapid_type_visitor for (self: AAttrReassignExpr, RapidTypeVisitor) */ void rapid_type_analysis__AAttrReassignExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; -val* var /* : nullable MType */; -val* var1 /* : nullable MMethodDef */; -val* var2 /* : MProperty */; +val* var /* : nullable CallSite */; +val* var2 /* : nullable CallSite */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type]))(self) /* read_type on */; -if (var == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 534); -exit(1); +{ +{ /* Inline typing#AReassignFormExpr#reassign_callsite (self) on */ +var2 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on */ +var = var2; +RET_LABEL1:(void)0; } -var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_property]))(self) /* reassign_property on */; -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 534); -exit(1); -} else { -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MPropDef__mproperty]))(var1) /* mproperty on */; } -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var, var2) /* add_send on */; +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ +} RET_LABEL:; } /* method rapid_type_analysis#AAttrReassignExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AAttrReassignExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AAttrReassignExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AAttrReassignExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AAttrReassignExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#ASuperExpr#accept_rapid_type_visitor for (self: ASuperExpr, RapidTypeVisitor) */ void rapid_type_analysis__ASuperExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; -val* var /* : nullable MMethod */; -val* var_mproperty /* var mproperty: nullable MMethod */; -val* var1 /* : null */; -short int var2 /* : Bool */; -val* var3 /* : MClassType */; -val* var4 /* : RapidTypeAnalysis */; -val* var5 /* : MClassType */; -val* var6 /* : MPropDef */; +val* var /* : nullable CallSite */; +val* var2 /* : nullable CallSite */; +val* var_callsite /* var callsite: nullable CallSite */; +val* var3 /* : null */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; short int var7 /* : Bool */; -int cltype; -int idtype; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +val* var10 /* : RapidTypeAnalysis */; +val* var12 /* : RapidTypeAnalysis */; +val* var13 /* : MClassType */; +val* var15 /* : MClassType */; +val* var16 /* : nullable MMethodDef */; +val* var18 /* : nullable MMethodDef */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASuperExpr__mproperty]))(self) /* mproperty on */; -var_mproperty = var; -var1 = NULL; -if (var_mproperty == NULL) { -var2 = 0; /* is null */ +{ +{ /* Inline typing#ASuperExpr#callsite (self) on */ +var2 = self->attrs[COLOR_typing__ASuperExpr___callsite].val; /* _callsite on */ +var = var2; +RET_LABEL1:(void)0; +} +} +var_callsite = var; +var3 = NULL; +if (var_callsite == NULL) { +var4 = 0; /* is null */ } else { -var2 = 1; /* arg is null and recv is not */ +var4 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_callsite,var3) on */ +var_other = var3; +{ +var8 = ((short int (*)(val*, val*))(var_callsite->class->vft[COLOR_kernel__Object___61d_61d]))(var_callsite, var_other) /* == on */; +var7 = var8; +} +var9 = !var7; +var5 = var9; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var_callsite); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } -if (var2){ -var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(var_v) /* receiver on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var3, var_mproperty) /* add_monomorphic_send on */; goto RET_LABEL; } else { } -var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__analysis]))(var_v) /* analysis on */; -var5 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__receiver]))(var_v) /* receiver on */; -var6 = ((val* (*)(val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__mpropdef]))(var_v) /* mpropdef on */; -/* isa MMethodDef */ -cltype = type_model__MMethodDef.color; -idtype = type_model__MMethodDef.id; -if(cltype >= var6->type->table_size) { -var7 = 0; -} else { -var7 = var6->type->type_table[cltype] == idtype; +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (var_v) on */ +var12 = var_v->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 440); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +{ +{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on */ +var15 = var_v->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441); +show_backtrace(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +{ /* Inline typing#ASuperExpr#mpropdef (self) on */ +var18 = self->attrs[COLOR_typing__ASuperExpr___mpropdef].val; /* _mpropdef on */ +var16 = var18; +RET_LABEL17:(void)0; } -if (!var7) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 547); -exit(1); } -((void (*)(val*, val*, val*))(var4->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__add_super_send]))(var4, var5, var6) /* add_super_send on */; +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 662); +show_backtrace(1); +} +{ +rapid_type_analysis__RapidTypeAnalysis__add_super_send(var10, var13, var16); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on */ +} RET_LABEL:; } /* method rapid_type_analysis#ASuperExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ASuperExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ASuperExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__ASuperExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#ASuperExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#AForExpr#accept_rapid_type_visitor for (self: AForExpr, RapidTypeVisitor) */ void rapid_type_analysis__AForExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; -val* var /* : AExpr */; -val* var1 /* : nullable MType */; -val* var_recvtype /* var recvtype: MType */; -val* var2 /* : nullable MClassType */; -val* var_colltype /* var colltype: MClassType */; -static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; -val* var7 /* : MMethod */; -val* var_itmeth /* var itmeth: MMethod */; -val* var8 /* : MPropDef */; -val* var9 /* : nullable MSignature */; -val* var10 /* : nullable MType */; -short int var11 /* : Bool */; -int cltype; -int idtype; -val* var12 /* : MClass */; -val* var13 /* : MClassDef */; -val* var14 /* : MClassType */; -val* var_iteratortype /* var iteratortype: MClassType */; -static val* varonce15; -val* var16 /* : String */; -char* var17 /* : NativeString */; -long var18 /* : Int */; -val* var19 /* : String */; -val* var20 /* : MClass */; -val* var21 /* : MClassType */; -val* var_objtype /* var objtype: MClassType */; -static val* varonce22; -val* var23 /* : String */; -char* var24 /* : NativeString */; +val* var /* : nullable CallSite */; +val* var2 /* : nullable CallSite */; +val* var3 /* : nullable CallSite */; +val* var5 /* : nullable CallSite */; +val* var6 /* : nullable Array[Variable] */; +val* var8 /* : nullable Array[Variable] */; +long var9 /* : Int */; +long var11 /* : Int */; +long var12 /* : Int */; +short int var13 /* : Bool */; +short int var14 /* : Bool */; +short int var16 /* : Bool */; +val* var17 /* : nullable CallSite */; +val* var19 /* : nullable CallSite */; +val* var20 /* : nullable Array[Variable] */; +val* var22 /* : nullable Array[Variable] */; +long var23 /* : Int */; long var25 /* : Int */; -val* var26 /* : String */; -val* var27 /* : MMethod */; -val* var28 /* : nullable Array[Variable] */; -long var29 /* : Int */; -long var30 /* : Int */; -short int var31 /* : Bool */; -short int var33 /* : Bool */; -static val* varonce34; -val* var35 /* : String */; -char* var36 /* : NativeString */; -long var37 /* : Int */; -val* var38 /* : String */; -val* var39 /* : MMethod */; -val* var40 /* : nullable Array[Variable] */; -long var41 /* : Int */; -long var42 /* : Int */; -short int var43 /* : Bool */; +long var26 /* : Int */; +short int var27 /* : Bool */; +short int var28 /* : Bool */; +short int var30 /* : Bool */; +val* var31 /* : nullable CallSite */; +val* var33 /* : nullable CallSite */; +val* var34 /* : nullable CallSite */; +val* var36 /* : nullable CallSite */; +val* var37 /* : nullable CallSite */; +val* var39 /* : nullable CallSite */; +val* var40 /* : nullable CallSite */; +val* var42 /* : nullable CallSite */; +val* var_mf /* var mf: nullable CallSite */; +val* var43 /* : null */; +short int var44 /* : Bool */; short int var45 /* : Bool */; -static val* varonce46; -val* var47 /* : String */; -char* var48 /* : NativeString */; -long var49 /* : Int */; -val* var50 /* : String */; -val* var51 /* : MMethod */; -static val* varonce52; -val* var53 /* : String */; -char* var54 /* : NativeString */; -long var55 /* : Int */; -val* var56 /* : String */; -val* var57 /* : MMethod */; -static val* varonce58; -val* var59 /* : String */; -char* var60 /* : NativeString */; -long var61 /* : Int */; -val* var62 /* : String */; -val* var63 /* : MMethod */; +val* var_other /* var other: nullable Object */; +short int var47 /* : Bool */; +short int var48 /* : Bool */; +short int var49 /* : Bool */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on */; -var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__mtype]))(var) /* mtype on */; -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 554); -exit(1); -} -var_recvtype = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AForExpr__coltype]))(self) /* coltype on */; -if (var2 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 555); -exit(1); -} -var_colltype = var2; -if (varonce) { -var3 = varonce; -} else { -var4 = "iterator"; -var5 = 8; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; -} -var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_colltype, var3) /* get_method on */; -var_itmeth = var7; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_recvtype, var_itmeth) /* add_send on */; -var8 = ((val* (*)(val*))(var_itmeth->class->vft[COLOR_model__MProperty__intro]))(var_itmeth) /* intro on */; -var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MMethodDef__msignature]))(var8) /* msignature on */; -if (var9 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 558); -exit(1); -} else { -var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MSignature__return_mtype]))(var9) /* return_mtype on */; -} -/* isa MClassType */ -cltype = type_model__MClassType.color; -idtype = type_model__MClassType.id; -if(var10 == NULL) { -var11 = 0; -} else { -if(cltype >= var10->type->table_size) { -var11 = 0; -} else { -var11 = var10->type->type_table[cltype] == idtype; +{ +{ /* Inline typing#AForExpr#method_iterator (self) on */ +var2 = self->attrs[COLOR_typing__AForExpr___method_iterator].val; /* _method_iterator on */ +var = var2; +RET_LABEL1:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } +{ +{ /* Inline typing#AForExpr#method_is_ok (self) on */ +var5 = self->attrs[COLOR_typing__AForExpr___method_is_ok].val; /* _method_is_ok on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var3); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ +} +{ +{ /* Inline scope#AForExpr#variables (self) on */ +var8 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on */ +var6 = var8; +RET_LABEL7:(void)0; } -if (!var11) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 558); -exit(1); } -var12 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClassType__mclass]))(var10) /* mclass on */; -var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClass__intro]))(var12) /* intro on */; -var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClassDef__bound_mtype]))(var13) /* bound_mtype on */; -var_iteratortype = var14; -if (varonce15) { -var16 = varonce15; +if (var6 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 671); +show_backtrace(1); } else { -var17 = "Object"; -var18 = 6; -var19 = string__NativeString__to_s_with_length(var17, var18); -var16 = var19; -varonce15 = var16; +{ /* Inline array#AbstractArrayRead#length (var6) on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/array.nit", 24); +show_backtrace(1); +} +var11 = var6->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var9 = var11; +RET_LABEL10:(void)0; +} +} +var12 = 1; +{ +{ /* Inline kernel#Int#== (var9,var12) on */ +var16 = var9 == var12; +var14 = var16; +goto RET_LABEL15; +RET_LABEL15:(void)0; +} +var13 = var14; +} +if (var13){ +{ +{ /* Inline typing#AForExpr#method_item (self) on */ +var19 = self->attrs[COLOR_typing__AForExpr___method_item].val; /* _method_item on */ +var17 = var19; +RET_LABEL18:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var17); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } -var20 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_class]))(var_v, var16) /* get_class on */; -var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClass__mclass_type]))(var20) /* mclass_type on */; -var_objtype = var21; -if (varonce22) { -var23 = varonce22; } else { -var24 = "is_ok"; -var25 = 5; -var26 = string__NativeString__to_s_with_length(var24, var25); -var23 = var26; -varonce22 = var23; +{ +{ /* Inline scope#AForExpr#variables (self) on */ +var22 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on */ +var20 = var22; +RET_LABEL21:(void)0; +} } -var27 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_iteratortype, var23) /* get_method on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_objtype, var27) /* add_send on */; -var28 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on */; -if (var28 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 561); -exit(1); +if (var20 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 673); +show_backtrace(1); } else { -var29 = ((long (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__length]))(var28) /* length on */; +{ /* Inline array#AbstractArrayRead#length (var20) on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/array.nit", 24); +show_backtrace(1); } -var30 = 1; -{ /* Inline kernel#Int#== (var29,var30) */ -var33 = var29 == var30; +var25 = var20->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var23 = var25; +RET_LABEL24:(void)0; +} +} +var26 = 2; +{ +{ /* Inline kernel#Int#== (var23,var26) on */ +var30 = var23 == var26; +var28 = var30; +goto RET_LABEL29; +RET_LABEL29:(void)0; +} +var27 = var28; +} +if (var27){ +{ +{ /* Inline typing#AForExpr#method_key (self) on */ +var33 = self->attrs[COLOR_typing__AForExpr___method_key].val; /* _method_key on */ var31 = var33; -goto RET_LABEL32; RET_LABEL32:(void)0; } -if (var31){ -if (varonce34) { -var35 = varonce34; -} else { -var36 = "item"; -var37 = 4; -var38 = string__NativeString__to_s_with_length(var36, var37); -var35 = var38; -varonce34 = var35; } -var39 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_iteratortype, var35) /* get_method on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_objtype, var39) /* add_send on */; -} else { -var40 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on */; -if (var40 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/rapid_type_analysis.nit", 563); -exit(1); -} else { -var41 = ((long (*)(val*))(var40->class->vft[COLOR_abstract_collection__Collection__length]))(var40) /* length on */; +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var31); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } -var42 = 2; -{ /* Inline kernel#Int#== (var41,var42) */ -var45 = var41 == var42; -var43 = var45; -goto RET_LABEL44; -RET_LABEL44:(void)0; +{ +{ /* Inline typing#AForExpr#method_item (self) on */ +var36 = self->attrs[COLOR_typing__AForExpr___method_item].val; /* _method_item on */ +var34 = var36; +RET_LABEL35:(void)0; } -if (var43){ -if (varonce46) { -var47 = varonce46; -} else { -var48 = "key"; -var49 = 3; -var50 = string__NativeString__to_s_with_length(var48, var49); -var47 = var50; -varonce46 = var47; } -var51 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_iteratortype, var47) /* get_method on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_objtype, var51) /* add_send on */; -if (varonce52) { -var53 = varonce52; +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var34); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ +} } else { -var54 = "item"; -var55 = 4; -var56 = string__NativeString__to_s_with_length(var54, var55); -var53 = var56; -varonce52 = var53; +PRINT_ERROR("Runtime error: %s", "Aborted"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 677); +show_backtrace(1); +} +} +{ +{ /* Inline typing#AForExpr#method_next (self) on */ +var39 = self->attrs[COLOR_typing__AForExpr___method_next].val; /* _method_next on */ +var37 = var39; +RET_LABEL38:(void)0; } -var57 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_iteratortype, var53) /* get_method on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_objtype, var57) /* add_send on */; +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var37); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ +} +{ +{ /* Inline typing#AForExpr#method_finish (self) on */ +var42 = self->attrs[COLOR_typing__AForExpr___method_finish].val; /* _method_finish on */ +var40 = var42; +RET_LABEL41:(void)0; +} +} +var_mf = var40; +var43 = NULL; +if (var_mf == NULL) { +var44 = 0; /* is null */ } else { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/rapid_type_analysis.nit", 567); -exit(1); +var44 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_mf,var43) on */ +var_other = var43; +{ +var48 = ((short int (*)(val*, val*))(var_mf->class->vft[COLOR_kernel__Object___61d_61d]))(var_mf, var_other) /* == on */; +var47 = var48; +} +var49 = !var47; +var45 = var49; +goto RET_LABEL46; +RET_LABEL46:(void)0; +} +var44 = var45; +} +if (var44){ +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var_mf); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } -if (varonce58) { -var59 = varonce58; } else { -var60 = "next"; -var61 = 4; -var62 = string__NativeString__to_s_with_length(var60, var61); -var59 = var62; -varonce58 = var59; } -var63 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__get_method]))(var_v, var_iteratortype, var59) /* get_method on */; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_send]))(var_v, var_objtype, var63) /* add_send on */; RET_LABEL:; } /* method rapid_type_analysis#AForExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__AForExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__AForExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__AForExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#AForExpr#accept_rapid_type_visitor on */ RET_LABEL:; } /* method rapid_type_analysis#ANewExpr#accept_rapid_type_visitor for (self: ANewExpr, RapidTypeVisitor) */ void rapid_type_analysis__ANewExpr__accept_rapid_type_visitor(val* self, val* p0) { val* var_v /* var v: RapidTypeVisitor */; -val* var /* : nullable MType */; -short int var1 /* : Bool */; -int cltype; -int idtype; +val* var /* : nullable MClassType */; +val* var2 /* : nullable MClassType */; val* var_mtype /* var mtype: MClassType */; -val* var2 /* : nullable MMethod */; -val* var_mproperty /* var mproperty: MMethod */; +val* var3 /* : nullable CallSite */; +val* var5 /* : nullable CallSite */; var_v = p0; -var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on */; -/* isa MClassType */ -cltype = type_model__MClassType.color; -idtype = type_model__MClassType.id; -if(var == NULL) { -var1 = 0; -} else { -if(cltype >= var->type->table_size) { -var1 = 0; -} else { -var1 = var->type->type_table[cltype] == idtype; +{ +{ /* Inline typing#ANewExpr#recvtype (self) on */ +var2 = self->attrs[COLOR_typing__ANewExpr___recvtype].val; /* _recvtype on */ +var = var2; +RET_LABEL1:(void)0; } } -if (!var1) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 576); -exit(1); +if (unlikely(var == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 688); +show_backtrace(1); } var_mtype = var; -((void (*)(val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_type]))(var_v, var_mtype) /* add_type on */; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ANewExpr__mproperty]))(self) /* mproperty on */; -if (var2 == NULL) { -fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/rapid_type_analysis.nit", 578); -exit(1); +{ +rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_mtype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on */ +} +{ +{ /* Inline typing#ANewExpr#callsite (self) on */ +var5 = self->attrs[COLOR_typing__ANewExpr___callsite].val; /* _callsite on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var3); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on */ } -var_mproperty = var2; -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send]))(var_v, var_mtype, var_mproperty) /* add_monomorphic_send on */; RET_LABEL:; } /* method rapid_type_analysis#ANewExpr#accept_rapid_type_visitor for (self: Object, RapidTypeVisitor) */ void VIRTUAL_rapid_type_analysis__ANewExpr__accept_rapid_type_visitor(val* self, val* p0) { -rapid_type_analysis__ANewExpr__accept_rapid_type_visitor(self, p0); +rapid_type_analysis__ANewExpr__accept_rapid_type_visitor(self, p0); /* Direct call rapid_type_analysis#ANewExpr#accept_rapid_type_visitor on */ RET_LABEL:; }