X-Git-Url: http://nitlanguage.org diff --git a/c_src/separate_compiler.sep.3.c b/c_src/separate_compiler.sep.3.c index 06f8668..2cadb40 100644 --- a/c_src/separate_compiler.sep.3.c +++ b/c_src/separate_compiler.sep.3.c @@ -1,3237 +1,9585 @@ #include "separate_compiler.sep.0.h" -/* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: SeparateCompilerVisitor, String, nullable MType, Array[RuntimeVariable]) */ -void separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) { -val* var_pname /* var pname: String */; -val* var_ret_type /* var ret_type: nullable MType */; -val* var_arguments /* var arguments: Array[RuntimeVariable] */; -val* var /* : nullable Object */; -val* var1 /* : MType */; -val* var_elttype /* var elttype: MType */; -static val* varonce; -val* var2 /* : String */; -char* var3 /* : NativeString */; -long var4 /* : Int */; -val* var5 /* : String */; +/* method separate_compiler#SeparateCompilerVisitor#unbox_extern for (self: Object, RuntimeVariable, MType): RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__unbox_extern(val* self, val* p0, val* p1) { +val* var /* : RuntimeVariable */; +val* var1 /* : RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__unbox_extern(self, p0, p1); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#box_extern for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__box_extern(val* self, val* p0, val* p1) { +val* var /* : RuntimeVariable */; +val* var_value /* var value: RuntimeVariable */; +val* var_mtype /* var mtype: MType */; +short int var1 /* : Bool */; +short int var2 /* : Bool */; +short int var3 /* : Bool */; +int cltype; +int idtype; +short int var_ /* var : Bool */; +val* var4 /* : MClass */; val* var6 /* : MClass */; -val* var_nclass /* var nclass: MClass */; -val* var7 /* : Array[Object] */; -long var8 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce9; -val* var10 /* : String */; -char* var11 /* : NativeString */; -long var12 /* : Int */; -val* var13 /* : String */; -val* var14 /* : String */; -static val* varonce15; -val* var16 /* : String */; -char* var17 /* : NativeString */; -long var18 /* : Int */; -val* var19 /* : String */; -long var20 /* : Int */; -val* var21 /* : nullable Object */; -static val* varonce22; +val* var7 /* : MClassKind */; +val* var9 /* : MClassKind */; +val* var10 /* : MClassKind */; +short int var11 /* : Bool */; +short int var12 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var14 /* : Bool */; +short int var16 /* : Bool */; +short int var_17 /* var : Bool */; +val* var18 /* : MClass */; +val* var20 /* : MClass */; +val* var21 /* : String */; val* var23 /* : String */; -char* var24 /* : NativeString */; -long var25 /* : Int */; -val* var26 /* : String */; -val* var27 /* : String */; -val* var_recv /* var recv: String */; -static val* varonce28; -val* var29 /* : String */; -char* var30 /* : NativeString */; -long var31 /* : Int */; -val* var32 /* : String */; +static val* varonce; +val* var24 /* : String */; +char* var25 /* : NativeString */; +long var26 /* : Int */; +val* var27 /* : FlatString */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; +val* var_other31 /* var other: nullable Object */; +short int var32 /* : Bool */; short int var33 /* : Bool */; -static val* varonce34; -val* var35 /* : String */; -char* var36 /* : NativeString */; -long var37 /* : Int */; -val* var38 /* : String */; -long var39 /* : Int */; -val* var40 /* : nullable Object */; -static val* varonce41; -val* var42 /* : String */; -char* var43 /* : NativeString */; -long var44 /* : Int */; -val* var45 /* : String */; -val* var46 /* : Array[Object] */; -long var47 /* : Int */; -val* var48 /* : NativeArray[Object] */; -val* var49 /* : String */; -val* var50 /* : RuntimeVariable */; -static val* varonce51; -val* var52 /* : String */; -char* var53 /* : NativeString */; -long var54 /* : Int */; -val* var55 /* : String */; -short int var56 /* : Bool */; -static val* varonce57; -val* var58 /* : String */; -char* var59 /* : NativeString */; -long var60 /* : Int */; -val* var61 /* : String */; -long var62 /* : Int */; -val* var63 /* : nullable Object */; -static val* varonce64; -val* var65 /* : String */; -char* var66 /* : NativeString */; -long var67 /* : Int */; -val* var68 /* : String */; -long var69 /* : Int */; -val* var70 /* : nullable Object */; -static val* varonce71; -val* var72 /* : String */; -char* var73 /* : NativeString */; -long var74 /* : Int */; -val* var75 /* : String */; -val* var76 /* : Array[Object] */; -long var77 /* : Int */; -val* var78 /* : NativeArray[Object] */; -val* var79 /* : String */; -static val* varonce80; -val* var81 /* : String */; -char* var82 /* : NativeString */; -long var83 /* : Int */; -val* var84 /* : String */; +short int var34 /* : Bool */; +val* var35 /* : AbstractCompiler */; +val* var37 /* : AbstractCompiler */; +val* var38 /* : MModule */; +val* var40 /* : MModule */; +val* var41 /* : MClassType */; +short int var43 /* : Bool */; +val* var44 /* : MClassType */; +static val* varonce45; +val* var46 /* : String */; +char* var47 /* : NativeString */; +long var48 /* : Int */; +val* var49 /* : FlatString */; +val* var50 /* : MClass */; +val* var51 /* : MClassType */; +val* var53 /* : MClassType */; +val* var_valtype /* var valtype: MClassType */; +val* var54 /* : RuntimeVariable */; +val* var_res /* var res: RuntimeVariable */; +short int var55 /* : Bool */; +val* var56 /* : AbstractCompiler */; +val* var58 /* : AbstractCompiler */; +val* var59 /* : nullable RapidTypeAnalysis */; +val* var61 /* : nullable RapidTypeAnalysis */; +val* var62 /* : null */; +short int var63 /* : Bool */; +short int var64 /* : Bool */; +short int var66 /* : Bool */; +short int var67 /* : Bool */; +short int var68 /* : Bool */; +short int var_69 /* var : Bool */; +val* var70 /* : AbstractCompiler */; +val* var72 /* : AbstractCompiler */; +val* var73 /* : nullable RapidTypeAnalysis */; +val* var75 /* : nullable RapidTypeAnalysis */; +val* var76 /* : HashSet[MClassType] */; +val* var78 /* : HashSet[MClassType] */; +val* var79 /* : MType */; +val* var81 /* : MType */; +short int var82 /* : Bool */; +int cltype83; +int idtype84; +const char* var_class_name; short int var85 /* : Bool */; -val* var86 /* : Array[Object] */; -long var87 /* : Int */; -val* var_88 /* var : Array[Object] */; -static val* varonce89; -val* var90 /* : String */; -char* var91 /* : NativeString */; -long var92 /* : Int */; -val* var93 /* : String */; -val* var94 /* : String */; +short int var86 /* : Bool */; +static val* varonce87; +val* var88 /* : String */; +char* var89 /* : NativeString */; +long var90 /* : Int */; +val* var91 /* : FlatString */; +val* var92 /* : MType */; +val* var94 /* : MType */; static val* varonce95; val* var96 /* : String */; char* var97 /* : NativeString */; long var98 /* : Int */; -val* var99 /* : String */; -long var100 /* : Int */; -val* var101 /* : nullable Object */; -static val* varonce102; -val* var103 /* : String */; -char* var104 /* : NativeString */; -long var105 /* : Int */; -val* var106 /* : String */; -val* var107 /* : String */; -val* var_recv1 /* var recv1: String */; -static val* varonce108; -val* var109 /* : String */; -char* var110 /* : NativeString */; -long var111 /* : Int */; -val* var112 /* : String */; -static val* varonce113; -val* var114 /* : String */; -char* var115 /* : NativeString */; -long var116 /* : Int */; -val* var117 /* : String */; -static val* varonce118; -val* var119 /* : String */; -char* var120 /* : NativeString */; -long var121 /* : Int */; +val* var99 /* : FlatString */; +val* var100 /* : MType */; +val* var102 /* : MType */; +static val* varonce103; +val* var104 /* : String */; +char* var105 /* : NativeString */; +long var106 /* : Int */; +val* var107 /* : FlatString */; +val* var108 /* : Array[Object] */; +long var109 /* : Int */; +val* var110 /* : NativeArray[Object] */; +val* var111 /* : String */; +static val* varonce112; +val* var113 /* : String */; +char* var114 /* : NativeString */; +long var115 /* : Int */; +val* var116 /* : FlatString */; +static val* varonce117; +val* var118 /* : String */; +char* var119 /* : NativeString */; +long var120 /* : Int */; +val* var121 /* : FlatString */; val* var122 /* : String */; -long var123 /* : Int */; -val* var124 /* : nullable Object */; -static val* varonce125; +val* var123 /* : Array[Object] */; +long var124 /* : Int */; +val* var125 /* : NativeArray[Object] */; val* var126 /* : String */; -char* var127 /* : NativeString */; -long var128 /* : Int */; -val* var129 /* : String */; -val* var130 /* : String */; -static val* varonce131; +static val* varonce127; +val* var128 /* : String */; +char* var129 /* : NativeString */; +long var130 /* : Int */; +val* var131 /* : FlatString */; val* var132 /* : String */; -char* var133 /* : NativeString */; -long var134 /* : Int */; -val* var135 /* : String */; -val* var136 /* : Array[Object] */; -long var137 /* : Int */; -val* var138 /* : NativeArray[Object] */; +static val* varonce133; +val* var134 /* : String */; +char* var135 /* : NativeString */; +long var136 /* : Int */; +val* var137 /* : FlatString */; +static val* varonce138; val* var139 /* : String */; -var_pname = p0; -var_ret_type = p1; -var_arguments = p2; -var = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on */; -var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var) /* mtype on */; -var_elttype = var1; -if (varonce) { -var2 = varonce; -} else { -var3 = "NativeArray"; -var4 = 11; -var5 = string__NativeString__to_s_with_length(var3, var4); -var2 = var5; -varonce = var2; -} -var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var2) /* get_class on */; -var_nclass = var6; -var7 = NEW_array__Array(&type_array__Arraykernel__Object); -var8 = 5; -((void (*)(val*, long))(var7->class->vft[COLOR_array__Array__with_capacity]))(var7, var8) /* with_capacity on */; -var_ = var7; -if (varonce9) { -var10 = varonce9; -} else { -var11 = "((struct instance_"; -var12 = 18; -var13 = string__NativeString__to_s_with_length(var11, var12); -var10 = var13; -varonce9 = var10; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on */; -var14 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_nclass) /* c_instance_name on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on */; -if (varonce15) { -var16 = varonce15; -} else { -var17 = "*)"; -var18 = 2; -var19 = string__NativeString__to_s_with_length(var17, var18); -var16 = var19; -varonce15 = var16; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on */; -var20 = 0; -var21 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var20) /* [] on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var21) /* add on */; -if (varonce22) { -var23 = varonce22; -} else { -var24 = ")->values"; -var25 = 9; -var26 = string__NativeString__to_s_with_length(var24, var25); -var23 = var26; -varonce22 = var23; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on */; -var27 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var_recv = var27; -if (varonce28) { -var29 = varonce28; -} else { -var30 = "[]"; -var31 = 2; -var32 = string__NativeString__to_s_with_length(var30, var31); -var29 = var32; -varonce28 = var29; -} -var33 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var29) /* == on */; -if (var33){ -if (varonce34) { -var35 = varonce34; -} else { -var36 = "["; -var37 = 1; -var38 = string__NativeString__to_s_with_length(var36, var37); -var35 = var38; -varonce34 = var35; -} -var39 = 1; -var40 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var39) /* [] on */; -if (varonce41) { -var42 = varonce41; -} else { -var43 = "]"; -var44 = 1; -var45 = string__NativeString__to_s_with_length(var43, var44); -var42 = var45; -varonce41 = var42; -} -var46 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var46 = array_instance Array[Object] */ -var47 = 4; -var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_recv; -((struct instance_array__NativeArray*)var48)->values[1] = (val*) var35; -((struct instance_array__NativeArray*)var48)->values[2] = (val*) var40; -((struct instance_array__NativeArray*)var48)->values[3] = (val*) var42; -((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on */; -} -var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on */; -if (var_ret_type == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1623); -show_backtrace(1); -} -var50 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var49, var_ret_type) /* new_expr on */; -((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var50) /* ret on */; -goto RET_LABEL; -} else { -if (varonce51) { -var52 = varonce51; +char* var140 /* : NativeString */; +long var141 /* : Int */; +val* var142 /* : FlatString */; +val* var143 /* : MType */; +val* var145 /* : MType */; +static val* varonce146; +val* var147 /* : String */; +char* var148 /* : NativeString */; +long var149 /* : Int */; +val* var150 /* : FlatString */; +val* var151 /* : Array[Object] */; +long var152 /* : Int */; +val* var153 /* : NativeArray[Object] */; +val* var154 /* : String */; +static val* varonce155; +val* var156 /* : String */; +char* var157 /* : NativeString */; +long var158 /* : Int */; +val* var159 /* : FlatString */; +val* var160 /* : String */; +val* var161 /* : Array[Object] */; +long var162 /* : Int */; +val* var163 /* : NativeArray[Object] */; +val* var164 /* : String */; +static val* varonce165; +val* var166 /* : String */; +char* var167 /* : NativeString */; +long var168 /* : Int */; +val* var169 /* : FlatString */; +val* var170 /* : String */; +static val* varonce171; +val* var172 /* : String */; +char* var173 /* : NativeString */; +long var174 /* : Int */; +val* var175 /* : FlatString */; +val* var176 /* : Array[Object] */; +long var177 /* : Int */; +val* var178 /* : NativeArray[Object] */; +val* var179 /* : String */; +static val* varonce180; +val* var181 /* : String */; +char* var182 /* : NativeString */; +long var183 /* : Int */; +val* var184 /* : FlatString */; +val* var185 /* : String */; +val* var186 /* : Array[Object] */; +long var187 /* : Int */; +val* var188 /* : NativeArray[Object] */; +val* var189 /* : String */; +static val* varonce190; +val* var191 /* : String */; +char* var192 /* : NativeString */; +long var193 /* : Int */; +val* var194 /* : FlatString */; +val* var195 /* : String */; +static val* varonce196; +val* var197 /* : String */; +char* var198 /* : NativeString */; +long var199 /* : Int */; +val* var200 /* : FlatString */; +val* var201 /* : Array[Object] */; +long var202 /* : Int */; +val* var203 /* : NativeArray[Object] */; +val* var204 /* : String */; +var_value = p0; +var_mtype = p1; +/* isa MClassType */ +cltype = type_model__MClassType.color; +idtype = type_model__MClassType.id; +if(cltype >= var_mtype->type->table_size) { +var3 = 0; } else { -var53 = "[]="; -var54 = 3; -var55 = string__NativeString__to_s_with_length(var53, var54); -var52 = var55; -varonce51 = var52; +var3 = var_mtype->type->type_table[cltype] == idtype; } -var56 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var52) /* == on */; -if (var56){ -if (varonce57) { -var58 = varonce57; -} else { -var59 = "["; -var60 = 1; -var61 = string__NativeString__to_s_with_length(var59, var60); -var58 = var61; -varonce57 = var58; +var_ = var3; +if (var3){ +{ +{ /* Inline model#MClassType#mclass (var_mtype) on */ +var6 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); } -var62 = 1; -var63 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var62) /* [] on */; -if (varonce64) { -var65 = varonce64; -} else { -var66 = "]="; -var67 = 2; -var68 = string__NativeString__to_s_with_length(var66, var67); -var65 = var68; -varonce64 = var65; +var4 = var6; +RET_LABEL5:(void)0; } -var69 = 2; -var70 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var69) /* [] on */; -if (varonce71) { -var72 = varonce71; -} else { -var73 = ";"; -var74 = 1; -var75 = string__NativeString__to_s_with_length(var73, var74); -var72 = var75; -varonce71 = var72; } -var76 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var76 = array_instance Array[Object] */ -var77 = 6; -var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var78)->values[0] = (val*) var_recv; -((struct instance_array__NativeArray*)var78)->values[1] = (val*) var58; -((struct instance_array__NativeArray*)var78)->values[2] = (val*) var63; -((struct instance_array__NativeArray*)var78)->values[3] = (val*) var65; -((struct instance_array__NativeArray*)var78)->values[4] = (val*) var70; -((struct instance_array__NativeArray*)var78)->values[5] = (val*) var72; -((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on */; +{ +{ /* Inline model#MClass#kind (var4) on */ +var9 = var4->attrs[COLOR_model__MClass___kind].val; /* _kind on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371); +show_backtrace(1); } -var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on */; -((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var79) /* add on */; -goto RET_LABEL; -} else { -if (varonce80) { -var81 = varonce80; -} else { -var82 = "copy_to"; -var83 = 7; -var84 = string__NativeString__to_s_with_length(var82, var83); -var81 = var84; -varonce80 = var81; -} -var85 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var81) /* == on */; -if (var85){ -var86 = NEW_array__Array(&type_array__Arraykernel__Object); -var87 = 5; -((void (*)(val*, long))(var86->class->vft[COLOR_array__Array__with_capacity]))(var86, var87) /* with_capacity on */; -var_88 = var86; -if (varonce89) { -var90 = varonce89; -} else { -var91 = "((struct instance_"; -var92 = 18; -var93 = string__NativeString__to_s_with_length(var91, var92); -var90 = var93; -varonce89 = var90; -} -((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var90) /* add on */; -var94 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_nclass) /* c_instance_name on */; -((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var94) /* add on */; -if (varonce95) { -var96 = varonce95; -} else { -var97 = "*)"; -var98 = 2; -var99 = string__NativeString__to_s_with_length(var97, var98); -var96 = var99; -varonce95 = var96; +var7 = var9; +RET_LABEL8:(void)0; } -((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var96) /* add on */; -var100 = 1; -var101 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var100) /* [] on */; -((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var101) /* add on */; -if (varonce102) { -var103 = varonce102; -} else { -var104 = ")->values"; -var105 = 9; -var106 = string__NativeString__to_s_with_length(var104, var105); -var103 = var106; -varonce102 = var103; } -((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var103) /* add on */; -var107 = ((val* (*)(val*))(var_88->class->vft[COLOR_string__Object__to_s]))(var_88) /* to_s on */; -var_recv1 = var107; -if (varonce108) { -var109 = varonce108; -} else { -var110 = "memcpy("; -var111 = 7; -var112 = string__NativeString__to_s_with_length(var110, var111); -var109 = var112; -varonce108 = var109; +{ +var10 = model__Object__extern_kind(self); } -if (varonce113) { -var114 = varonce113; -} else { -var115 = ", "; -var116 = 2; -var117 = string__NativeString__to_s_with_length(var115, var116); -var114 = var117; -varonce113 = var114; +{ +{ /* Inline kernel#Object#== (var7,var10) on */ +var_other = var10; +{ +{ /* Inline kernel#Object#is_same_instance (var7,var_other) on */ +var16 = var7 == var_other; +var14 = var16; +goto RET_LABEL15; +RET_LABEL15:(void)0; } -if (varonce118) { -var119 = varonce118; -} else { -var120 = ", "; -var121 = 2; -var122 = string__NativeString__to_s_with_length(var120, var121); -var119 = var122; -varonce118 = var119; } -var123 = 2; -var124 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var123) /* [] on */; -if (varonce125) { -var126 = varonce125; -} else { -var127 = "*sizeof("; -var128 = 8; -var129 = string__NativeString__to_s_with_length(var127, var128); -var126 = var129; -varonce125 = var126; +var12 = var14; +goto RET_LABEL13; +RET_LABEL13:(void)0; } -var130 = ((val* (*)(val*))(var_elttype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_elttype) /* ctype on */; -if (varonce131) { -var132 = varonce131; -} else { -var133 = "));"; -var134 = 3; -var135 = string__NativeString__to_s_with_length(var133, var134); -var132 = var135; -varonce131 = var132; +var11 = var12; } -var136 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var136 = array_instance Array[Object] */ -var137 = 9; -var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var138)->values[0] = (val*) var109; -((struct instance_array__NativeArray*)var138)->values[1] = (val*) var_recv1; -((struct instance_array__NativeArray*)var138)->values[2] = (val*) var114; -((struct instance_array__NativeArray*)var138)->values[3] = (val*) var_recv; -((struct instance_array__NativeArray*)var138)->values[4] = (val*) var119; -((struct instance_array__NativeArray*)var138)->values[5] = (val*) var124; -((struct instance_array__NativeArray*)var138)->values[6] = (val*) var126; -((struct instance_array__NativeArray*)var138)->values[7] = (val*) var130; -((struct instance_array__NativeArray*)var138)->values[8] = (val*) var132; -((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on */; -} -var139 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on */; -((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var139) /* add on */; -goto RET_LABEL; +var2 = var11; } else { +var2 = var_; } +var_17 = var2; +if (var2){ +{ +{ /* 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; } -RET_LABEL:; } -/* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: Object, String, nullable MType, Array[RuntimeVariable]) */ -void VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) { -separate_compiler__SeparateCompilerVisitor__native_array_def(self, p0, p1, p2); -RET_LABEL:; +{ +{ /* Inline model#MClass#name (var18) on */ +var23 = var18->attrs[COLOR_model__MClass___name].val; /* _name on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352); +show_backtrace(1); } -/* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: SeparateCompilerVisitor, MType, Array[RuntimeVariable]) */ -void separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) { -val* var_ret_type /* var ret_type: MType */; -val* var_arguments /* var arguments: Array[RuntimeVariable] */; -static val* varonce; -val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -val* var3 /* : String */; -val* var4 /* : MClass */; -val* var_mclass /* var mclass: MClass */; -val* var5 /* : MClassType */; -val* var6 /* : Array[MType] */; -val* var7 /* : nullable Object */; -short int var8 /* : Bool */; -int cltype; -int idtype; -const char* var_class_name; -val* var_ft /* var ft: MParameterType */; -long var9 /* : Int */; -val* var10 /* : nullable Object */; -val* var11 /* : RuntimeVariable */; -val* var_res /* var res: RuntimeVariable */; -var_ret_type = p0; -var_arguments = p1; -if (varonce) { -var = varonce; -} else { -var1 = "ArrayCapable"; -var2 = 12; -var3 = string__NativeString__to_s_with_length(var1, var2); -var = var3; -varonce = var; -} -var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var) /* get_class on */; -var_mclass = var4; -var5 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on */; -var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassType__arguments]))(var5) /* arguments on */; -var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__first]))(var6) /* first on */; -/* isa MParameterType */ -cltype = type_model__MParameterType.color; -idtype = type_model__MParameterType.id; -if(cltype >= var7->type->table_size) { -var8 = 0; -} else { -var8 = var7->type->type_table[cltype] == idtype; -} -if (!var8) { -var_class_name = var7 == NULL ? "null" : var7->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MParameterType", var_class_name); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1638); -show_backtrace(1); -} -var_ft = var7; -var9 = 1; -var10 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var9) /* [] on */; -var11 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__native_array_instance]))(self, var_ft, var10) /* native_array_instance on */; -var_res = var11; -((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var_res) /* ret on */; -RET_LABEL:; +var21 = var23; +RET_LABEL22:(void)0; } -/* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */ -void VIRTUAL_separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) { -separate_compiler__SeparateCompilerVisitor__calloc_array(self, p0, p1); -RET_LABEL:; } -/* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: SeparateCompilerVisitor, MClassDef, MType) */ -void separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) { -val* var_mclassdef /* var mclassdef: MClassDef */; -val* var_mtype /* var mtype: MType */; -short int var /* : Bool */; -val* var1 /* : AbstractCompiler */; -val* var_compiler /* var compiler: SeparateCompiler */; -val* var2 /* : Map[MClassDef, Set[MType]] */; -val* var3 /* : nullable Frame */; -val* var4 /* : MPropDef */; -val* var5 /* : MClassDef */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var8 /* : Map[MClassDef, Set[MType]] */; -val* var9 /* : nullable Frame */; -val* var10 /* : MPropDef */; -val* var11 /* : MClassDef */; -val* var12 /* : HashSet[MType] */; -val* var13 /* : Map[MClassDef, Set[MType]] */; -val* var14 /* : nullable Frame */; -val* var15 /* : MPropDef */; -val* var16 /* : MClassDef */; -val* var17 /* : nullable Object */; -var_mclassdef = p0; -var_mtype = p1; -var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on */; -if (!var) { -fprintf(stderr, "Runtime error: %s", "Assert failed"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1644); +if (varonce) { +var24 = varonce; +} else { +var25 = "NativeString"; +var26 = 12; +var27 = string__NativeString__to_s_with_length(var25, var26); +var24 = var27; +varonce = var24; +} +{ +{ /* Inline kernel#Object#!= (var21,var24) on */ +var_other31 = var24; +{ +var33 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_other31) /* == on */; +var32 = var33; +} +var34 = !var32; +var29 = var34; +goto RET_LABEL30; +RET_LABEL30:(void)0; +} +var28 = var29; +} +var1 = var28; +} else { +var1 = var_17; +} +if (var1){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var37 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var37 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); show_backtrace(1); } -var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on */; -var_compiler = var1; -var2 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on */; -var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on */; -if (var3 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1646); +var35 = var37; +RET_LABEL36:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var35) on */ +var40 = var35->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on */ +if (unlikely(var40 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463); show_backtrace(1); -} else { -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var3) /* mpropdef on */; } -var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MPropDef__mclassdef]))(var4) /* mclassdef on */; -var6 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var2, var5) /* has_key on */; -var7 = !var6; -if (var7){ -var8 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on */; -var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on */; -if (var9 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1647); +var38 = var40; +RET_LABEL39:(void)0; +} +} +{ +{ /* Inline model#MModule#pointer_type (var38) on */ +var43 = var38->attrs[COLOR_model__MModule___pointer_type].val != NULL; /* _pointer_type on */ +if(likely(var43)) { +var44 = var38->attrs[COLOR_model__MModule___pointer_type].val; /* _pointer_type on */ +if (unlikely(var44 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pointer_type"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 217); show_backtrace(1); -} else { -var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var9) /* mpropdef on */; } -var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MPropDef__mclassdef]))(var10) /* mclassdef on */; -var12 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType); -((void (*)(val*))(var12->class->vft[COLOR_hash_collection__HashSet__init]))(var12) /* init on */; -((void (*)(val*, val*, val*))(var8->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var8, var11, var12) /* []= on */; } else { +if (varonce45) { +var46 = varonce45; +} else { +var47 = "Pointer"; +var48 = 7; +var49 = string__NativeString__to_s_with_length(var47, var48); +var46 = var49; +varonce45 = var46; } -var13 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on */; -var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on */; -if (var14 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1649); +{ +var50 = model__MModule__get_primitive_class(var38, var46); +} +{ +{ /* Inline model#MClass#mclass_type (var50) on */ +var53 = var50->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var53 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435); show_backtrace(1); -} else { -var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var14) /* mpropdef on */; } -var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MPropDef__mclassdef]))(var15) /* mclassdef on */; -var17 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var16) /* [] on */; -((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var17, var_mtype) /* add on */; -RET_LABEL:; +var51 = var53; +RET_LABEL52:(void)0; } -/* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: Object, MClassDef, MType) */ -void VIRTUAL_separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) { -separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, p0, p1); -RET_LABEL:; } -/* method separate_compiler#MMethodDef#separate_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */ -val* separate_compiler__MMethodDef__separate_runtime_function(val* self) { -val* var /* : AbstractRuntimeFunction */; -val* var1 /* : nullable SeparateRuntimeFunction */; -val* var_res /* var res: nullable SeparateRuntimeFunction */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : SeparateRuntimeFunction */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache]))(self) /* separate_runtime_function_cache on */; -var_res = var1; -var2 = NULL; -if (var_res == NULL) { -var3 = 1; /* is null */ -} else { -var3 = 0; /* arg is null but recv is not */ +var38->attrs[COLOR_model__MModule___pointer_type].val = var51; /* _pointer_type on */ +var44 = var51; } -if (var3){ -var4 = NEW_separate_compiler__SeparateRuntimeFunction(&type_separate_compiler__SeparateRuntimeFunction); -((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on */; -var_res = var4; -((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache_61d]))(self, var_res) /* separate_runtime_function_cache= on */; -} else { +var41 = var44; +RET_LABEL42:(void)0; } -var = var_res; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method separate_compiler#MMethodDef#separate_runtime_function for (self: Object): AbstractRuntimeFunction */ -val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function(val* self) { -val* var /* : AbstractRuntimeFunction */; -val* var1 /* : AbstractRuntimeFunction */; -var1 = separate_compiler__MMethodDef__separate_runtime_function(self); -var = var1; -RET_LABEL:; -return var; +var_valtype = var41; +{ +var54 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_mtype); } -/* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: MMethodDef): nullable SeparateRuntimeFunction */ -val* separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) { -val* var /* : nullable SeparateRuntimeFunction */; -val* var1 /* : nullable SeparateRuntimeFunction */; -var1 = self->attrs[COLOR_separate_compiler__MMethodDef___64dseparate_runtime_function_cache].val; /* @separate_runtime_function_cache on */ -var = var1; -RET_LABEL:; -return var; +var_res = var54; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var58 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var58 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); } -/* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: Object): nullable SeparateRuntimeFunction */ -val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) { -val* var /* : nullable SeparateRuntimeFunction */; -val* var1 /* : nullable SeparateRuntimeFunction */; -var1 = separate_compiler__MMethodDef__separate_runtime_function_cache(self); -var = var1; -RET_LABEL:; -return var; +var56 = var58; +RET_LABEL57:(void)0; } -/* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: MMethodDef, nullable SeparateRuntimeFunction) */ -void separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) { -self->attrs[COLOR_separate_compiler__MMethodDef___64dseparate_runtime_function_cache].val = p0; /* @separate_runtime_function_cache on */ -RET_LABEL:; } -/* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: Object, nullable SeparateRuntimeFunction) */ -void VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) { -separate_compiler__MMethodDef__separate_runtime_function_cache_61d(self, p0); -RET_LABEL:; +{ +{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var56) on */ +var61 = var56->attrs[COLOR_separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on */ +var59 = var61; +RET_LABEL60:(void)0; } -/* method separate_compiler#MMethodDef#virtual_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */ -val* separate_compiler__MMethodDef__virtual_runtime_function(val* self) { -val* var /* : AbstractRuntimeFunction */; -val* var1 /* : nullable VirtualRuntimeFunction */; -val* var_res /* var res: nullable VirtualRuntimeFunction */; -val* var2 /* : null */; -short int var3 /* : Bool */; -val* var4 /* : VirtualRuntimeFunction */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache]))(self) /* virtual_runtime_function_cache on */; -var_res = var1; -var2 = NULL; -if (var_res == NULL) { -var3 = 1; /* is null */ -} else { -var3 = 0; /* arg is null but recv is not */ } -if (var3){ -var4 = NEW_separate_compiler__VirtualRuntimeFunction(&type_separate_compiler__VirtualRuntimeFunction); -((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on */; -var_res = var4; -((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d]))(self, var_res) /* virtual_runtime_function_cache= on */; +var62 = NULL; +if (var59 == NULL) { +var63 = 0; /* is null */ } else { +var63 = 1; /* arg is null and recv is not */ } -var = var_res; -goto RET_LABEL; -RET_LABEL:; -return var; +if (0) { +{ /* Inline kernel#Object#!= (var59,var62) on */ +var_other31 = var62; +{ +var67 = ((short int (*)(val*, val*))(var59->class->vft[COLOR_kernel__Object___61d_61d]))(var59, var_other31) /* == on */; +var66 = var67; } -/* method separate_compiler#MMethodDef#virtual_runtime_function for (self: Object): AbstractRuntimeFunction */ -val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function(val* self) { -val* var /* : AbstractRuntimeFunction */; -val* var1 /* : AbstractRuntimeFunction */; -var1 = separate_compiler__MMethodDef__virtual_runtime_function(self); -var = var1; -RET_LABEL:; -return var; +var68 = !var66; +var64 = var68; +goto RET_LABEL65; +RET_LABEL65:(void)0; } -/* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: MMethodDef): nullable VirtualRuntimeFunction */ -val* separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) { -val* var /* : nullable VirtualRuntimeFunction */; -val* var1 /* : nullable VirtualRuntimeFunction */; -var1 = self->attrs[COLOR_separate_compiler__MMethodDef___64dvirtual_runtime_function_cache].val; /* @virtual_runtime_function_cache on */ -var = var1; -RET_LABEL:; -return var; +var63 = var64; } -/* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: Object): nullable VirtualRuntimeFunction */ -val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) { -val* var /* : nullable VirtualRuntimeFunction */; -val* var1 /* : nullable VirtualRuntimeFunction */; -var1 = separate_compiler__MMethodDef__virtual_runtime_function_cache(self); -var = var1; -RET_LABEL:; -return var; +var_69 = var63; +if (var63){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var72 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var72 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); } -/* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: MMethodDef, nullable VirtualRuntimeFunction) */ -void separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) { -self->attrs[COLOR_separate_compiler__MMethodDef___64dvirtual_runtime_function_cache].val = p0; /* @virtual_runtime_function_cache on */ -RET_LABEL:; +var70 = var72; +RET_LABEL71:(void)0; } -/* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: Object, nullable VirtualRuntimeFunction) */ -void VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) { -separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(self, p0); -RET_LABEL:; } -/* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: SeparateRuntimeFunction): String */ -val* separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) { -val* var /* : String */; -val* var1 /* : Array[Object] */; -long var2 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; -val* var7 /* : MMethodDef */; -val* var8 /* : String */; -static val* varonce9; -val* var10 /* : String */; -char* var11 /* : NativeString */; -long var12 /* : Int */; -val* var13 /* : String */; -val* var14 /* : String */; -var1 = NEW_array__Array(&type_array__Arraykernel__Object); -var2 = 3; -((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on */; -var_ = var1; -if (varonce) { -var3 = varonce; -} else { -var4 = ""; -var5 = 0; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on */; -var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var7) /* c_name on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on */; -if (varonce9) { -var10 = varonce9; -} else { -var11 = ""; -var12 = 0; -var13 = string__NativeString__to_s_with_length(var11, var12); -var10 = var13; -varonce9 = var10; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on */; -var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var = var14; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var70) on */ +var75 = var70->attrs[COLOR_separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on */ +var73 = var75; +RET_LABEL74:(void)0; } -/* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: Object): String */ -val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__SeparateRuntimeFunction__build_c_name(self); -var = var1; -RET_LABEL:; -return var; } -/* method separate_compiler#SeparateRuntimeFunction#to_s for (self: SeparateRuntimeFunction): String */ -val* separate_compiler__SeparateRuntimeFunction__to_s(val* self) { -val* var /* : String */; -val* var1 /* : MMethodDef */; -val* var2 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on */; -var = var2; -goto RET_LABEL; -RET_LABEL:; -return var; +if (var73 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1032); +show_backtrace(1); +} else { +{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var73) on */ +if (unlikely(var73 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); } -/* method separate_compiler#SeparateRuntimeFunction#to_s for (self: Object): String */ -val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__to_s(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__SeparateRuntimeFunction__to_s(self); -var = var1; -RET_LABEL:; -return var; +var78 = var73->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on */ +if (unlikely(var78 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types"); +PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53); +show_backtrace(1); } -/* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: SeparateRuntimeFunction, AbstractCompiler) */ -void separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -const char* var_class_name; -val* var_compiler /* var compiler: AbstractCompiler */; -val* var1 /* : MMethodDef */; -val* var_mmethoddef /* var mmethoddef: MMethodDef */; -val* var2 /* : MMethodDef */; -val* var3 /* : MClassDef */; -val* var4 /* : MClassType */; -val* var_recv /* var recv: MClassType */; -val* var5 /* : AbstractCompilerVisitor */; -val* var_v /* var v: AbstractCompilerVisitor */; -val* var6 /* : RuntimeVariable */; -static val* varonce; -val* var7 /* : String */; -char* var8 /* : NativeString */; -long var9 /* : Int */; -val* var10 /* : String */; -val* var_selfvar /* var selfvar: RuntimeVariable */; -val* var11 /* : Array[RuntimeVariable] */; -val* var_arguments /* var arguments: Array[RuntimeVariable] */; -val* var12 /* : Frame */; -val* var_frame /* var frame: Frame */; -val* var13 /* : nullable MSignature */; -val* var14 /* : MClassDef */; -val* var15 /* : MClassType */; -val* var16 /* : MClassDef */; -val* var17 /* : MClassType */; -val* var18 /* : MClassDef */; -val* var19 /* : MModule */; -short int var20 /* : Bool */; -val* var21 /* : MType */; -val* var_msignature /* var msignature: MSignature */; -val* var22 /* : Buffer */; -val* var_sig /* var sig: Buffer */; -val* var23 /* : Buffer */; -val* var_comment /* var comment: Buffer */; -val* var24 /* : nullable MType */; -val* var_ret /* var ret: nullable MType */; -val* var25 /* : null */; -short int var26 /* : Bool */; -val* var27 /* : String */; -static val* varonce28; -val* var29 /* : String */; -char* var30 /* : NativeString */; -long var31 /* : Int */; -val* var32 /* : String */; -val* var33 /* : Array[Object] */; -long var34 /* : Int */; -val* var35 /* : NativeArray[Object] */; -val* var36 /* : String */; -val* var37 /* : MProperty */; -short int var38 /* : Bool */; -val* var39 /* : String */; -static val* varonce40; -val* var41 /* : String */; -char* var42 /* : NativeString */; -long var43 /* : Int */; -val* var44 /* : String */; -val* var45 /* : Array[Object] */; -long var46 /* : Int */; -val* var47 /* : NativeArray[Object] */; -val* var48 /* : String */; -static val* varonce49; -val* var50 /* : String */; -char* var51 /* : NativeString */; -long var52 /* : Int */; -val* var53 /* : String */; -val* var54 /* : String */; -static val* varonce55; -val* var56 /* : String */; -char* var57 /* : NativeString */; -long var58 /* : Int */; -val* var59 /* : String */; -val* var60 /* : MType */; -val* var61 /* : String */; -static val* varonce62; -val* var63 /* : String */; -char* var64 /* : NativeString */; -long var65 /* : Int */; -val* var66 /* : String */; -val* var67 /* : Array[Object] */; -long var68 /* : Int */; -val* var69 /* : NativeArray[Object] */; -val* var70 /* : String */; -static val* varonce71; -val* var72 /* : String */; -char* var73 /* : NativeString */; -long var74 /* : Int */; -val* var75 /* : String */; -static val* varonce76; -val* var77 /* : String */; -char* var78 /* : NativeString */; -long var79 /* : Int */; -val* var80 /* : String */; -val* var81 /* : MType */; -val* var82 /* : Array[Object] */; -long var83 /* : Int */; -val* var84 /* : NativeArray[Object] */; -val* var85 /* : String */; -val* var86 /* : Range[Int] */; -long var87 /* : Int */; -long var88 /* : Int */; -val* var89 /* : Discrete */; -val* var90 /* : Discrete */; -val* var91 /* : Iterator[nullable Object] */; -short int var92 /* : Bool */; -val* var93 /* : nullable Object */; -long var_i /* var i: Int */; -long var94 /* : Int */; -val* var95 /* : Array[MParameter] */; -val* var96 /* : nullable Object */; -val* var97 /* : MType */; -val* var_mtype /* var mtype: MType */; -long var98 /* : Int */; -short int var99 /* : Bool */; -short int var101 /* : Bool */; -static val* varonce102; -val* var103 /* : String */; -char* var104 /* : NativeString */; -long var105 /* : Int */; -val* var106 /* : String */; -val* var107 /* : MClass */; -val* var108 /* : Array[MType] */; -long var109 /* : Int */; -val* var110 /* : NativeArray[MType] */; -val* var111 /* : MClassType */; -static val* varonce112; -val* var113 /* : String */; -char* var114 /* : NativeString */; -long var115 /* : Int */; -val* var116 /* : String */; -val* var117 /* : Array[Object] */; -long var118 /* : Int */; -val* var119 /* : NativeArray[Object] */; -val* var120 /* : String */; -static val* varonce121; -val* var122 /* : String */; -char* var123 /* : NativeString */; -long var124 /* : Int */; -val* var125 /* : String */; -val* var126 /* : String */; -static val* varonce127; -val* var128 /* : String */; -char* var129 /* : NativeString */; -long var130 /* : Int */; -val* var131 /* : String */; -val* var132 /* : Array[Object] */; -long var133 /* : Int */; -val* var134 /* : NativeArray[Object] */; -val* var135 /* : Object */; -val* var136 /* : String */; -val* var137 /* : RuntimeVariable */; -val* var138 /* : Array[Object] */; -long var139 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce140; -val* var141 /* : String */; -char* var142 /* : NativeString */; -long var143 /* : Int */; -val* var144 /* : String */; -val* var145 /* : nullable Object */; -static val* varonce146; -val* var147 /* : String */; -char* var148 /* : NativeString */; -long var149 /* : Int */; -val* var150 /* : String */; -val* var151 /* : String */; -val* var_argvar /* var argvar: RuntimeVariable */; -static val* varonce152; -val* var153 /* : String */; -char* var154 /* : NativeString */; -long var155 /* : Int */; -val* var156 /* : String */; -static val* varonce157; -val* var158 /* : String */; -char* var159 /* : NativeString */; -long var160 /* : Int */; -val* var161 /* : String */; -val* var162 /* : null */; -short int var163 /* : Bool */; -static val* varonce164; -val* var165 /* : String */; -char* var166 /* : NativeString */; -long var167 /* : Int */; -val* var168 /* : String */; -val* var169 /* : Array[Object] */; -long var170 /* : Int */; -val* var171 /* : NativeArray[Object] */; -val* var172 /* : String */; -val* var173 /* : String */; -static val* varonce174; -val* var175 /* : String */; -char* var176 /* : NativeString */; -long var177 /* : Int */; -val* var178 /* : String */; -val* var179 /* : Array[Object] */; -long var180 /* : Int */; -val* var181 /* : NativeArray[Object] */; -val* var182 /* : String */; -static val* varonce183; -val* var184 /* : String */; -char* var185 /* : NativeString */; -long var186 /* : Int */; -val* var187 /* : String */; -static val* varonce188; -val* var189 /* : String */; -char* var190 /* : NativeString */; -long var191 /* : Int */; -val* var192 /* : String */; -static val* varonce193; -val* var194 /* : String */; -char* var195 /* : NativeString */; -long var196 /* : Int */; -val* var197 /* : String */; -val* var198 /* : Array[Object] */; -long var199 /* : Int */; -val* var200 /* : NativeArray[Object] */; -val* var201 /* : String */; -static val* varonce202; -val* var203 /* : String */; -char* var204 /* : NativeString */; -long var205 /* : Int */; -val* var206 /* : String */; -val* var207 /* : Array[Object] */; -long var208 /* : Int */; -val* var209 /* : NativeArray[Object] */; -val* var210 /* : String */; -val* var211 /* : null */; -short int var212 /* : Bool */; -val* var213 /* : RuntimeVariable */; -static val* varonce214; -val* var215 /* : String */; -char* var216 /* : NativeString */; -long var217 /* : Int */; -val* var218 /* : String */; -val* var219 /* : String */; -val* var220 /* : nullable Object */; -val* var221 /* : MType */; -short int var222 /* : Bool */; -val* var223 /* : nullable RuntimeVariable */; -val* var224 /* : nullable String */; -static val* varonce225; -val* var226 /* : String */; -char* var227 /* : NativeString */; -long var228 /* : Int */; -val* var229 /* : String */; -val* var230 /* : Array[Object] */; -long var231 /* : Int */; -val* var232 /* : NativeArray[Object] */; -val* var233 /* : String */; -val* var234 /* : null */; -short int var235 /* : Bool */; -static val* varonce236; -val* var237 /* : String */; -char* var238 /* : NativeString */; -long var239 /* : Int */; -val* var240 /* : String */; -val* var241 /* : nullable RuntimeVariable */; -static val* varonce242; -val* var243 /* : String */; -char* var244 /* : NativeString */; -long var245 /* : Int */; -val* var246 /* : String */; -val* var247 /* : Array[Object] */; -long var248 /* : Int */; -val* var249 /* : NativeArray[Object] */; -val* var250 /* : String */; -static val* varonce251; -val* var252 /* : String */; -char* var253 /* : NativeString */; -long var254 /* : Int */; -val* var255 /* : String */; -val* var256 /* : String */; -static val* varonce257; -val* var258 /* : String */; -char* var259 /* : NativeString */; -long var260 /* : Int */; -val* var261 /* : String */; -long var262 /* : Int */; -short int var263 /* : Bool */; -short int var264 /* : Bool */; -val* var265 /* : HashMap[String, String] */; -val* var266 /* : String */; -val* var267 /* : MClassDef */; -val* var268 /* : MModule */; -val* var269 /* : String */; -static val* varonce270; -val* var271 /* : String */; -char* var272 /* : NativeString */; -long var273 /* : Int */; -val* var274 /* : String */; -val* var275 /* : MClassDef */; -val* var276 /* : MClass */; -val* var277 /* : String */; -static val* varonce278; -val* var279 /* : String */; -char* var280 /* : NativeString */; -long var281 /* : Int */; -val* var282 /* : String */; -val* var283 /* : MProperty */; -val* var284 /* : String */; -static val* varonce285; -val* var286 /* : String */; -char* var287 /* : NativeString */; -long var288 /* : Int */; -val* var289 /* : String */; -val* var290 /* : Location */; -val* var291 /* : nullable SourceFile */; -val* var292 /* : String */; -static val* varonce293; -val* var294 /* : String */; -char* var295 /* : NativeString */; -long var296 /* : Int */; -val* var297 /* : String */; -val* var298 /* : Location */; -long var299 /* : Int */; -static val* varonce300; -val* var301 /* : String */; -char* var302 /* : NativeString */; -long var303 /* : Int */; -val* var304 /* : String */; -val* var305 /* : Array[Object] */; -long var306 /* : Int */; -val* var307 /* : NativeArray[Object] */; -val* var308 /* : Object */; -val* var309 /* : String */; -/* Covariant cast for argument 0 (compiler) isa COMPILER */ -/* isa COMPILER */ -type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; -} -if (!var) { -var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1685); -show_backtrace(1); -} -var_compiler = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var_mmethoddef = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on */; -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on */; -var_recv = var4; -var5 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on */; -var_v = var5; -var6 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable); -if (varonce) { -var7 = varonce; -} else { -var8 = "self"; -var9 = 4; -var10 = string__NativeString__to_s_with_length(var8, var9); -var7 = var10; -varonce = var7; +var76 = var78; +RET_LABEL77:(void)0; } -((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var_recv, var_recv) /* init on */; -var_selfvar = var6; -var11 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable); -((void (*)(val*))(var11->class->vft[COLOR_array__Array__init]))(var11) /* init on */; -var_arguments = var11; -var12 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame); -((void (*)(val*, val*, val*, val*, val*))(var12->class->vft[COLOR_abstract_compiler__Frame__init]))(var12, var_v, var_mmethoddef, var_recv, var_arguments) /* init on */; -var_frame = var12; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on */; -var13 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on */; -var14 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var15 = ((val* (*)(val*))(var14->class->vft[COLOR_model__MClassDef__bound_mtype]))(var14) /* bound_mtype on */; -var16 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClassDef__bound_mtype]))(var16) /* bound_mtype on */; -var18 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MClassDef__mmodule]))(var18) /* mmodule on */; -var20 = 1; -if (var13 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1696); -show_backtrace(1); -} else { -var21 = ((val* (*)(val*, val*, val*, val*, short int))(var13->class->vft[COLOR_model__MType__resolve_for]))(var13, var15, var17, var19, var20) /* resolve_for on */; -} -var_msignature = var21; -var22 = NEW_string__Buffer(&type_string__Buffer); -((void (*)(val*))(var22->class->vft[COLOR_string__Buffer__init]))(var22) /* init on */; -var_sig = var22; -var23 = NEW_string__Buffer(&type_string__Buffer); -((void (*)(val*))(var23->class->vft[COLOR_string__Buffer__init]))(var23) /* init on */; -var_comment = var23; -var24 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on */; -var_ret = var24; -var25 = NULL; -if (var_ret == NULL) { -var26 = 0; /* is null */ -} else { -var26 = 1; /* arg is null and recv is not */ } -if (var26){ -var27 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on */; -if (varonce28) { -var29 = varonce28; -} else { -var30 = " "; -var31 = 1; -var32 = string__NativeString__to_s_with_length(var30, var31); -var29 = var32; -varonce28 = var29; -} -var33 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var33 = array_instance Array[Object] */ -var34 = 2; -var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var35)->values[0] = (val*) var27; -((struct instance_array__NativeArray*)var35)->values[1] = (val*) var29; -((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on */; -} -var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var36) /* append on */; -} else { -var37 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on */; -var38 = ((short int (*)(val*))(var37->class->vft[COLOR_model__MMethod__is_new]))(var37) /* is_new on */; -if (var38){ -var_ret = var_recv; -var39 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on */; -if (varonce40) { -var41 = varonce40; +{ +{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on */ +var81 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on */ +if (unlikely(var81 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634); +show_backtrace(1); +} +var79 = var81; +RET_LABEL80:(void)0; +} +} +/* isa MClassType */ +cltype83 = type_model__MClassType.color; +idtype84 = type_model__MClassType.id; +if(cltype83 >= var79->type->table_size) { +var82 = 0; } else { -var42 = " "; -var43 = 1; -var44 = string__NativeString__to_s_with_length(var42, var43); -var41 = var44; -varonce40 = var41; +var82 = var79->type->type_table[cltype83] == idtype84; } -var45 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var45 = array_instance Array[Object] */ -var46 = 2; -var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var47)->values[0] = (val*) var39; -((struct instance_array__NativeArray*)var47)->values[1] = (val*) var41; -((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on */; -} -var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var48) /* append on */; -} else { -if (varonce49) { -var50 = varonce49; -} else { -var51 = "void "; -var52 = 5; -var53 = string__NativeString__to_s_with_length(var51, var52); -var50 = var53; -varonce49 = var50; -} -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var50) /* append on */; -} -} -var54 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var54) /* append on */; -if (varonce55) { -var56 = varonce55; -} else { -var57 = "("; -var58 = 1; -var59 = string__NativeString__to_s_with_length(var57, var58); -var56 = var59; -varonce55 = var56; -} -var60 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on */; -var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_compiler__MType__ctype]))(var60) /* ctype on */; -if (varonce62) { -var63 = varonce62; -} else { -var64 = " "; -var65 = 1; -var66 = string__NativeString__to_s_with_length(var64, var65); -var63 = var66; -varonce62 = var63; -} -var67 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var67 = array_instance Array[Object] */ -var68 = 4; -var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var69)->values[0] = (val*) var56; -((struct instance_array__NativeArray*)var69)->values[1] = (val*) var61; -((struct instance_array__NativeArray*)var69)->values[2] = (val*) var63; -((struct instance_array__NativeArray*)var69)->values[3] = (val*) var_selfvar; -((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on */; -} -var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var70) /* append on */; -if (varonce71) { -var72 = varonce71; +if (unlikely(!var82)) { +var_class_name = var79 == NULL ? "null" : var79->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1032); +show_backtrace(1); +} +{ +var85 = hash_collection__HashSet__has(var76, var79); +} +var86 = !var85; +var55 = var86; } else { -var73 = "("; -var74 = 1; -var75 = string__NativeString__to_s_with_length(var73, var74); -var72 = var75; -varonce71 = var72; +var55 = var_69; } -if (varonce76) { -var77 = varonce76; +if (var55){ +if (varonce87) { +var88 = varonce87; } else { -var78 = ": "; -var79 = 2; -var80 = string__NativeString__to_s_with_length(var78, var79); -var77 = var80; -varonce76 = var77; -} -var81 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on */; -var82 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var82 = array_instance Array[Object] */ -var83 = 4; -var84 = NEW_array__NativeArray(var83, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var84)->values[0] = (val*) var72; -((struct instance_array__NativeArray*)var84)->values[1] = (val*) var_selfvar; -((struct instance_array__NativeArray*)var84)->values[2] = (val*) var77; -((struct instance_array__NativeArray*)var84)->values[3] = (val*) var81; -((void (*)(val*, val*, long))(var82->class->vft[COLOR_array__Array__with_native]))(var82, var84, var83) /* with_native on */; -} -var85 = ((val* (*)(val*))(var82->class->vft[COLOR_string__Object__to_s]))(var82) /* to_s on */; -((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var85) /* append on */; -((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on */; -var86 = NEW_range__Range(&type_range__Rangekernel__Int); -var87 = 0; -var88 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on */; -var89 = BOX_kernel__Int(var87); /* autobox from Int to Discrete */ -var90 = BOX_kernel__Int(var88); /* autobox from Int to Discrete */ -((void (*)(val*, val*, val*))(var86->class->vft[COLOR_range__Range__without_last]))(var86, var89, var90) /* without_last on */; -var91 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_collection__Collection__iterator]))(var86) /* iterator on */; -for(;;) { -var92 = ((short int (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var91) /* is_ok on */; -if(!var92) break; -var93 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__item]))(var91) /* item on */; -var94 = ((struct instance_kernel__Int*)var93)->value; /* autounbox from nullable Object to Int */; -var_i = var94; -var95 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on */; -var96 = ((val* (*)(val*, long))(var95->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var95, var_i) /* [] on */; -var97 = ((val* (*)(val*))(var96->class->vft[COLOR_model__MParameter__mtype]))(var96) /* mtype on */; -var_mtype = var97; -var98 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on */; -{ /* Inline kernel#Int#== (var_i,var98) */ -var101 = var_i == var98; -var99 = var101; -goto RET_LABEL100; -RET_LABEL100:(void)0; +var89 = "/*no boxing of "; +var90 = 15; +var91 = string__NativeString__to_s_with_length(var89, var90); +var88 = var91; +varonce87 = var88; } -if (var99){ -if (varonce102) { -var103 = varonce102; +{ +{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on */ +var94 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on */ +if (unlikely(var94 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634); +show_backtrace(1); +} +var92 = var94; +RET_LABEL93:(void)0; +} +} +if (varonce95) { +var96 = varonce95; } else { -var104 = "Array"; -var105 = 5; -var106 = string__NativeString__to_s_with_length(var104, var105); -var103 = var106; -varonce102 = var103; +var97 = ": "; +var98 = 2; +var99 = string__NativeString__to_s_with_length(var97, var98); +var96 = var99; +varonce95 = var96; +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on */ +var102 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on */ +if (unlikely(var102 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634); +show_backtrace(1); +} +var100 = var102; +RET_LABEL101:(void)0; } -var107 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var103) /* get_class on */; -var108 = NEW_array__Array(&type_array__Arraymodel__MType); -{ /* var108 = array_instance Array[MType] */ -var109 = 1; -var110 = NEW_array__NativeArray(var109, &type_array__NativeArraymodel__MType); -((struct instance_array__NativeArray*)var110)->values[0] = (val*) var_mtype; -((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on */; } -var111 = ((val* (*)(val*, val*))(var107->class->vft[COLOR_model__MClass__get_mtype]))(var107, var108) /* get_mtype on */; -var_mtype = var111; +if (varonce103) { +var104 = varonce103; } else { +var105 = " is not live! */"; +var106 = 16; +var107 = string__NativeString__to_s_with_length(var105, var106); +var104 = var107; +varonce103 = var104; +} +var108 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var108 = array_instance Array[Object] */ +var109 = 5; +var110 = NEW_array__NativeArray(var109, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var110)->values[0] = (val*) var88; +((struct instance_array__NativeArray*)var110)->values[1] = (val*) var92; +((struct instance_array__NativeArray*)var110)->values[2] = (val*) var96; +((struct instance_array__NativeArray*)var110)->values[3] = (val*) var100; +((struct instance_array__NativeArray*)var110)->values[4] = (val*) var104; +{ +((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on */; +} +} +{ +var111 = ((val* (*)(val*))(var108->class->vft[COLOR_string__Object__to_s]))(var108) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var111); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ } if (varonce112) { var113 = varonce112; } else { -var114 = ", "; -var115 = 2; +var114 = "PRINT_ERROR(\"Dead code executed!\\n\"); show_backtrace(1);"; +var115 = 56; var116 = string__NativeString__to_s_with_length(var114, var115); var113 = var116; varonce112 = var113; } -var117 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var117 = array_instance Array[Object] */ -var118 = 2; -var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var119)->values[0] = (val*) var113; -((struct instance_array__NativeArray*)var119)->values[1] = (val*) var_mtype; -((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on */; +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var113); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +var = var_res; +goto RET_LABEL; +} else { } -var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on */; -((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var120) /* append on */; -if (varonce121) { -var122 = varonce121; +if (varonce117) { +var118 = varonce117; } else { -var123 = ", "; +var119 = "BOX_"; +var120 = 4; +var121 = string__NativeString__to_s_with_length(var119, var120); +var118 = var121; +varonce117 = var118; +} +{ +var122 = ((val* (*)(val*))(var_valtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_valtype) /* c_name on */; +} +var123 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var123 = array_instance Array[Object] */ var124 = 2; -var125 = string__NativeString__to_s_with_length(var123, var124); -var122 = var125; -varonce121 = var122; +var125 = NEW_array__NativeArray(var124, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var125)->values[0] = (val*) var118; +((struct instance_array__NativeArray*)var125)->values[1] = (val*) var122; +{ +((void (*)(val*, val*, long))(var123->class->vft[COLOR_array__Array__with_native]))(var123, var125, var124) /* with_native on */; +} +} +{ +var126 = ((val* (*)(val*))(var123->class->vft[COLOR_string__Object__to_s]))(var123) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var126); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ } -var126 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on */; if (varonce127) { var128 = varonce127; } else { -var129 = " p"; -var130 = 2; +var129 = " = BOX_"; +var130 = 7; var131 = string__NativeString__to_s_with_length(var129, var130); var128 = var131; varonce127 = var128; } -var132 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var132 = array_instance Array[Object] */ -var133 = 4; -var134 = NEW_array__NativeArray(var133, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var134)->values[0] = (val*) var122; -((struct instance_array__NativeArray*)var134)->values[1] = (val*) var126; -((struct instance_array__NativeArray*)var134)->values[2] = (val*) var128; -var135 = BOX_kernel__Int(var_i); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var134)->values[3] = (val*) var135; -((void (*)(val*, val*, long))(var132->class->vft[COLOR_array__Array__with_native]))(var132, var134, var133) /* with_native on */; -} -var136 = ((val* (*)(val*))(var132->class->vft[COLOR_string__Object__to_s]))(var132) /* to_s on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var136) /* append on */; -var137 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable); -var138 = NEW_array__Array(&type_array__Arraykernel__Object); -var139 = 3; -((void (*)(val*, long))(var138->class->vft[COLOR_array__Array__with_capacity]))(var138, var139) /* with_capacity on */; -var_ = var138; -if (varonce140) { -var141 = varonce140; -} else { -var142 = "p"; -var143 = 1; -var144 = string__NativeString__to_s_with_length(var142, var143); -var141 = var144; -varonce140 = var141; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var141) /* add on */; -var145 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */ -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var145) /* add on */; -if (varonce146) { -var147 = varonce146; -} else { -var148 = ""; -var149 = 0; -var150 = string__NativeString__to_s_with_length(var148, var149); -var147 = var150; -varonce146 = var147; +{ +var132 = ((val* (*)(val*))(var_valtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_valtype) /* c_name on */; +} +if (varonce133) { +var134 = varonce133; +} else { +var135 = "("; +var136 = 1; +var137 = string__NativeString__to_s_with_length(var135, var136); +var134 = var137; +varonce133 = var134; +} +if (varonce138) { +var139 = varonce138; +} else { +var140 = "); /* boxing "; +var141 = 13; +var142 = string__NativeString__to_s_with_length(var140, var141); +var139 = var142; +varonce138 = var139; +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on */ +var145 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on */ +if (unlikely(var145 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634); +show_backtrace(1); +} +var143 = var145; +RET_LABEL144:(void)0; +} +} +if (varonce146) { +var147 = varonce146; +} else { +var148 = " */"; +var149 = 3; +var150 = string__NativeString__to_s_with_length(var148, var149); +var147 = var150; +varonce146 = var147; +} +var151 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var151 = array_instance Array[Object] */ +var152 = 8; +var153 = NEW_array__NativeArray(var152, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var153)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var153)->values[1] = (val*) var128; +((struct instance_array__NativeArray*)var153)->values[2] = (val*) var132; +((struct instance_array__NativeArray*)var153)->values[3] = (val*) var134; +((struct instance_array__NativeArray*)var153)->values[4] = (val*) var_value; +((struct instance_array__NativeArray*)var153)->values[5] = (val*) var139; +((struct instance_array__NativeArray*)var153)->values[6] = (val*) var143; +((struct instance_array__NativeArray*)var153)->values[7] = (val*) var147; +{ +((void (*)(val*, val*, long))(var151->class->vft[COLOR_array__Array__with_native]))(var151, var153, var152) /* with_native on */; +} +} +{ +var154 = ((val* (*)(val*))(var151->class->vft[COLOR_string__Object__to_s]))(var151) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var154); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce155) { +var156 = varonce155; +} else { +var157 = "type_"; +var158 = 5; +var159 = string__NativeString__to_s_with_length(var157, var158); +var156 = var159; +varonce155 = var156; +} +{ +var160 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on */; +} +var161 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var161 = array_instance Array[Object] */ +var162 = 2; +var163 = NEW_array__NativeArray(var162, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var163)->values[0] = (val*) var156; +((struct instance_array__NativeArray*)var163)->values[1] = (val*) var160; +{ +((void (*)(val*, val*, long))(var161->class->vft[COLOR_array__Array__with_native]))(var161, var163, var162) /* with_native on */; +} +} +{ +var164 = ((val* (*)(val*))(var161->class->vft[COLOR_string__Object__to_s]))(var161) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var164); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +if (varonce165) { +var166 = varonce165; +} else { +var167 = "->type = &type_"; +var168 = 15; +var169 = string__NativeString__to_s_with_length(var167, var168); +var166 = var169; +varonce165 = var166; +} +{ +var170 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on */; +} +if (varonce171) { +var172 = varonce171; +} else { +var173 = ";"; +var174 = 1; +var175 = string__NativeString__to_s_with_length(var173, var174); +var172 = var175; +varonce171 = var172; +} +var176 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var176 = array_instance Array[Object] */ +var177 = 4; +var178 = NEW_array__NativeArray(var177, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var178)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var178)->values[1] = (val*) var166; +((struct instance_array__NativeArray*)var178)->values[2] = (val*) var170; +((struct instance_array__NativeArray*)var178)->values[3] = (val*) var172; +{ +((void (*)(val*, val*, long))(var176->class->vft[COLOR_array__Array__with_native]))(var176, var178, var177) /* with_native on */; +} +} +{ +var179 = ((val* (*)(val*))(var176->class->vft[COLOR_string__Object__to_s]))(var176) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var179); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce180) { +var181 = varonce180; +} else { +var182 = "class_"; +var183 = 6; +var184 = string__NativeString__to_s_with_length(var182, var183); +var181 = var184; +varonce180 = var181; +} +{ +var185 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on */; +} +var186 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var186 = array_instance Array[Object] */ +var187 = 2; +var188 = NEW_array__NativeArray(var187, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var188)->values[0] = (val*) var181; +((struct instance_array__NativeArray*)var188)->values[1] = (val*) var185; +{ +((void (*)(val*, val*, long))(var186->class->vft[COLOR_array__Array__with_native]))(var186, var188, var187) /* with_native on */; +} +} +{ +var189 = ((val* (*)(val*))(var186->class->vft[COLOR_string__Object__to_s]))(var186) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var189); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +if (varonce190) { +var191 = varonce190; +} else { +var192 = "->class = &class_"; +var193 = 17; +var194 = string__NativeString__to_s_with_length(var192, var193); +var191 = var194; +varonce190 = var191; +} +{ +var195 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on */; +} +if (varonce196) { +var197 = varonce196; +} else { +var198 = ";"; +var199 = 1; +var200 = string__NativeString__to_s_with_length(var198, var199); +var197 = var200; +varonce196 = var197; +} +var201 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var201 = array_instance Array[Object] */ +var202 = 4; +var203 = NEW_array__NativeArray(var202, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var203)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var203)->values[1] = (val*) var191; +((struct instance_array__NativeArray*)var203)->values[2] = (val*) var195; +((struct instance_array__NativeArray*)var203)->values[3] = (val*) var197; +{ +((void (*)(val*, val*, long))(var201->class->vft[COLOR_array__Array__with_native]))(var201, var203, var202) /* with_native on */; +} +} +{ +var204 = ((val* (*)(val*))(var201->class->vft[COLOR_string__Object__to_s]))(var201) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var204); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +var = var_res; +goto RET_LABEL; +} else { +var = var_value; +goto RET_LABEL; +} +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#box_extern for (self: Object, RuntimeVariable, MType): RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__box_extern(val* self, val* p0, val* p1) { +val* var /* : RuntimeVariable */; +val* var1 /* : RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__box_extern(self, p0, p1); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#type_info for (self: SeparateCompilerVisitor, RuntimeVariable): String */ +val* separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) { +val* var /* : String */; +val* var_value /* var value: RuntimeVariable */; +val* var1 /* : MType */; +val* var3 /* : MType */; +val* var4 /* : String */; +static val* varonce; +val* var5 /* : String */; +char* var6 /* : NativeString */; +long var7 /* : Int */; +val* var8 /* : FlatString */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +static val* varonce11; +val* var12 /* : String */; +char* var13 /* : NativeString */; +long var14 /* : Int */; +val* var15 /* : FlatString */; +val* var16 /* : Array[Object] */; +long var17 /* : Int */; +val* var18 /* : NativeArray[Object] */; +val* var19 /* : String */; +val* var20 /* : AbstractCompiler */; +val* var22 /* : AbstractCompiler */; +val* var23 /* : Set[MType] */; +val* var25 /* : Set[MType] */; +val* var26 /* : MType */; +val* var28 /* : MType */; +static val* varonce29; +val* var30 /* : String */; +char* var31 /* : NativeString */; +long var32 /* : Int */; +val* var33 /* : FlatString */; +val* var34 /* : MType */; +val* var36 /* : MType */; +val* var37 /* : String */; +val* var38 /* : Array[Object] */; +long var39 /* : Int */; +val* var40 /* : NativeArray[Object] */; +val* var41 /* : String */; +static val* varonce42; +val* var43 /* : String */; +char* var44 /* : NativeString */; +long var45 /* : Int */; +val* var46 /* : FlatString */; +val* var47 /* : MType */; +val* var49 /* : MType */; +val* var50 /* : String */; +static val* varonce51; +val* var52 /* : String */; +char* var53 /* : NativeString */; +long var54 /* : Int */; +val* var55 /* : FlatString */; +val* var56 /* : Array[Object] */; +long var57 /* : Int */; +val* var58 /* : NativeArray[Object] */; +val* var59 /* : String */; +var_value = p0; +{ +{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on */ +var3 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var1) /* ctype on */; +} +if (varonce) { +var5 = varonce; +} else { +var6 = "val*"; +var7 = 4; +var8 = string__NativeString__to_s_with_length(var6, var7); +var5 = var8; +varonce = var5; +} +{ +var10 = string__FlatString___61d_61d(var4, var5); +var9 = var10; +} +if (var9){ +if (varonce11) { +var12 = varonce11; +} else { +var13 = "->type"; +var14 = 6; +var15 = string__NativeString__to_s_with_length(var13, var14); +var12 = var15; +varonce11 = var12; +} +var16 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var16 = array_instance Array[Object] */ +var17 = 2; +var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var18)->values[0] = (val*) var_value; +((struct instance_array__NativeArray*)var18)->values[1] = (val*) var12; +{ +((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on */; +} +} +{ +var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on */; +} +var = var19; +goto RET_LABEL; +} else { +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var22 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var20 = var22; +RET_LABEL21:(void)0; +} +} +{ +{ /* Inline separate_compiler#SeparateCompiler#undead_types (var20) on */ +var25 = var20->attrs[COLOR_separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on */ +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 156); +show_backtrace(1); +} +var23 = var25; +RET_LABEL24:(void)0; +} +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on */ +var28 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on */ +if (unlikely(var28 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634); +show_backtrace(1); +} +var26 = var28; +RET_LABEL27:(void)0; +} +} +{ +((void (*)(val*, val*))(var23->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var23, var26) /* add on */; +} +if (varonce29) { +var30 = varonce29; +} else { +var31 = "type_"; +var32 = 5; +var33 = string__NativeString__to_s_with_length(var31, var32); +var30 = var33; +varonce29 = var30; +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on */ +var36 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on */ +if (unlikely(var36 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634); +show_backtrace(1); +} +var34 = var36; +RET_LABEL35:(void)0; +} +} +{ +var37 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_compiler__MType__c_name]))(var34) /* c_name on */; +} +var38 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var38 = array_instance Array[Object] */ +var39 = 2; +var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var40)->values[0] = (val*) var30; +((struct instance_array__NativeArray*)var40)->values[1] = (val*) var37; +{ +((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on */; +} +} +{ +var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var41); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +if (varonce42) { +var43 = varonce42; +} else { +var44 = "(&type_"; +var45 = 7; +var46 = string__NativeString__to_s_with_length(var44, var45); +var43 = var46; +varonce42 = var43; +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on */ +var49 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on */ +if (unlikely(var49 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634); +show_backtrace(1); +} +var47 = var49; +RET_LABEL48:(void)0; +} +} +{ +var50 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_compiler__MType__c_name]))(var47) /* c_name on */; +} +if (varonce51) { +var52 = varonce51; +} else { +var53 = ")"; +var54 = 1; +var55 = string__NativeString__to_s_with_length(var53, var54); +var52 = var55; +varonce51 = var52; +} +var56 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var56 = array_instance Array[Object] */ +var57 = 3; +var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var58)->values[0] = (val*) var43; +((struct instance_array__NativeArray*)var58)->values[1] = (val*) var50; +((struct instance_array__NativeArray*)var58)->values[2] = (val*) var52; +{ +((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on */; +} +} +{ +var59 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on */; +} +var = var59; +goto RET_LABEL; +} +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#type_info for (self: Object, RuntimeVariable): String */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) { +val* var /* : String */; +val* var1 /* : String */; +var1 = separate_compiler__SeparateCompilerVisitor__type_info(self, p0); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#compile_callsite for (self: SeparateCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) { +val* var /* : nullable RuntimeVariable */; +val* var_callsite /* var callsite: CallSite */; +val* var_args /* var args: Array[RuntimeVariable] */; +val* var1 /* : AbstractCompiler */; +val* var3 /* : AbstractCompiler */; +val* var4 /* : nullable RapidTypeAnalysis */; +val* var6 /* : nullable RapidTypeAnalysis */; +val* var_rta /* var rta: nullable RapidTypeAnalysis */; +val* var7 /* : MMethod */; +val* var9 /* : MMethod */; +val* var_mmethod /* var mmethod: MMethod */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var12 /* : AbstractCompiler */; +val* var14 /* : AbstractCompiler */; +val* var15 /* : ModelBuilder */; +val* var17 /* : ModelBuilder */; +val* var18 /* : ToolContext */; +val* var20 /* : ToolContext */; +val* var21 /* : OptionBool */; +val* var23 /* : OptionBool */; +val* var24 /* : nullable Object */; +val* var26 /* : nullable Object */; +short int var27 /* : Bool */; +short int var_ /* var : Bool */; +val* var28 /* : null */; +short int var29 /* : Bool */; +short int var30 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var32 /* : Bool */; +short int var33 /* : Bool */; +short int var34 /* : Bool */; +short int var_35 /* var : Bool */; +short int var36 /* : Bool */; +short int var38 /* : Bool */; +short int var39 /* : Bool */; +val* var40 /* : Set[MMethodDef] */; +val* var_tgs /* var tgs: Set[MMethodDef] */; +long var41 /* : Int */; +long var42 /* : Int */; +short int var43 /* : Bool */; +short int var44 /* : Bool */; +short int var46 /* : Bool */; +val* var47 /* : nullable RuntimeVariable */; +val* var_res0 /* var res0: nullable RuntimeVariable */; +val* var48 /* : nullable Object */; +val* var49 /* : nullable Object */; +val* var50 /* : MClassDef */; +val* var52 /* : MClassDef */; +val* var53 /* : MClassType */; +val* var55 /* : MClassType */; +val* var56 /* : nullable RuntimeVariable */; +val* var_res /* var res: nullable RuntimeVariable */; +val* var57 /* : null */; +short int var58 /* : Bool */; +short int var59 /* : Bool */; +short int var61 /* : Bool */; +short int var62 /* : Bool */; +short int var63 /* : Bool */; +val* var64 /* : null */; +short int var65 /* : Bool */; +short int var66 /* : Bool */; +short int var68 /* : Bool */; +short int var69 /* : Bool */; +short int var70 /* : Bool */; +static val* varonce; +val* var71 /* : String */; +char* var72 /* : NativeString */; +long var73 /* : Int */; +val* var74 /* : FlatString */; +val* var75 /* : nullable RuntimeVariable */; +var_callsite = p0; +var_args = p1; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var1) on */ +var6 = var1->attrs[COLOR_separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +var_rta = var4; +{ +{ /* Inline typing#CallSite#mproperty (var_callsite) on */ +var9 = var_callsite->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +var_mmethod = var7; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var14 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var12) on */ +var17 = var12->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var15 = var17; +RET_LABEL16:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var15) on */ +var20 = var15->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +{ /* Inline separate_compiler#ToolContext#opt_direct_call_monomorph (var18) on */ +var23 = var18->attrs[COLOR_separate_compiler__ToolContext___opt_direct_call_monomorph].val; /* _opt_direct_call_monomorph on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 36); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var21) on */ +var26 = var21->attrs[COLOR_opts__Option___value].val; /* _value on */ +var24 = var26; +RET_LABEL25:(void)0; +} +} +var27 = ((struct instance_kernel__Bool*)var24)->value; /* autounbox from nullable Object to Bool */; +var_ = var27; +if (var27){ +var28 = NULL; +if (var_rta == NULL) { +var29 = 0; /* is null */ +} else { +var29 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_rta,var28) on */ +var_other = var28; +{ +var33 = ((short int (*)(val*, val*))(var_rta->class->vft[COLOR_kernel__Object___61d_61d]))(var_rta, var_other) /* == on */; +var32 = var33; +} +var34 = !var32; +var30 = var34; +goto RET_LABEL31; +RET_LABEL31:(void)0; +} +var29 = var30; +} +var11 = var29; +} else { +var11 = var_; +} +var_35 = var11; +if (var11){ +{ +{ /* Inline model#MMethod#is_root_init (var_mmethod) on */ +var38 = var_mmethod->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on */ +var36 = var38; +RET_LABEL37:(void)0; +} +} +var39 = !var36; +var10 = var39; +} else { +var10 = var_35; +} +if (var10){ +{ +var40 = rapid_type_analysis__RapidTypeAnalysis__live_targets(var_rta, var_callsite); +} +var_tgs = var40; +{ +var41 = ((long (*)(val*))(var_tgs->class->vft[COLOR_abstract_collection__Collection__length]))(var_tgs) /* length on */; +} +var42 = 1; +{ +{ /* Inline kernel#Int#== (var41,var42) on */ +var46 = var41 == var42; +var44 = var46; +goto RET_LABEL45; +RET_LABEL45:(void)0; +} +var43 = var44; +} +if (var43){ +{ +var47 = separate_compiler__SeparateCompilerVisitor__before_send(self, var_mmethod, var_args); +} +var_res0 = var47; +{ +var48 = ((val* (*)(val*))(var_tgs->class->vft[COLOR_abstract_collection__Collection__first]))(var_tgs) /* first on */; +} +{ +var49 = ((val* (*)(val*))(var_tgs->class->vft[COLOR_abstract_collection__Collection__first]))(var_tgs) /* first on */; +} +{ +{ /* Inline model#MPropDef#mclassdef (var49) on */ +var52 = var49->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var52 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var50 = var52; +RET_LABEL51:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var50) on */ +var55 = var50->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var55 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var53 = var55; +RET_LABEL54:(void)0; +} +} +{ +var56 = separate_compiler__SeparateCompilerVisitor__call(self, var48, var53, var_args); +} +var_res = var56; +var57 = NULL; +if (var_res0 == NULL) { +var58 = 0; /* is null */ +} else { +var58 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res0,var57) on */ +var_other = var57; +{ +var62 = ((short int (*)(val*, val*))(var_res0->class->vft[COLOR_kernel__Object___61d_61d]))(var_res0, var_other) /* == on */; +var61 = var62; +} +var63 = !var61; +var59 = var63; +goto RET_LABEL60; +RET_LABEL60:(void)0; +} +var58 = var59; +} +if (var58){ +var64 = NULL; +if (var_res == NULL) { +var65 = 0; /* is null */ +} else { +var65 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var64) on */ +var_other = var64; +{ +var69 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on */; +var68 = var69; +} +var70 = !var68; +var66 = var70; +goto RET_LABEL67; +RET_LABEL67:(void)0; +} +var65 = var66; +} +if (unlikely(!var65)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1074); +show_backtrace(1); +} +{ +abstract_compiler__AbstractCompilerVisitor__assign(self, var_res0, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on */ +} +var_res = var_res0; +} else { +} +if (varonce) { +var71 = varonce; +} else { +var72 = "}"; +var73 = 1; +var74 = string__NativeString__to_s_with_length(var72, var73); +var71 = var74; +varonce = var71; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var71); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +var = var_res; +goto RET_LABEL; +} else { +} +} else { +} +{ +var75 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__compile_callsite]))(self, p0, p1) /* compile_callsite on */; +} +var = var75; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#compile_callsite for (self: Object, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) { +val* var /* : nullable RuntimeVariable */; +val* var1 /* : nullable RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__compile_callsite(self, p0, p1); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) { +val* var /* : nullable RuntimeVariable */; +val* var_mmethod /* var mmethod: MMethod */; +val* var_arguments /* var arguments: Array[RuntimeVariable] */; +val* var1 /* : nullable Object */; +val* var2 /* : MType */; +val* var4 /* : MType */; +val* var5 /* : String */; +static val* varonce; +val* var6 /* : String */; +char* var7 /* : NativeString */; +long var8 /* : Int */; +val* var9 /* : FlatString */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var13 /* : Bool */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var16 /* : AbstractCompiler */; +val* var18 /* : AbstractCompiler */; +val* var19 /* : MModule */; +val* var21 /* : MModule */; +val* var_m /* var m: MModule */; +val* var22 /* : AbstractCompiler */; +val* var24 /* : AbstractCompiler */; +val* var25 /* : AbstractCompiler */; +val* var27 /* : AbstractCompiler */; +val* var28 /* : MModule */; +val* var30 /* : MModule */; +val* var32 /* : nullable Object */; +val* var33 /* : MType */; +val* var35 /* : MType */; +val* var36 /* : nullable RuntimeVariable */; +val* var_res /* var res: nullable RuntimeVariable */; +val* var37 /* : AbstractCompiler */; +val* var39 /* : AbstractCompiler */; +val* var41 /* : String */; +val* var42 /* : nullable RuntimeVariable */; +var_mmethod = p0; +var_arguments = p1; +{ +var1 = abstract_collection__SequenceRead__first(var_arguments); +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var1) on */ +var4 = var1->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +var5 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var2) /* ctype on */; +} +if (varonce) { +var6 = varonce; +} else { +var7 = "val*"; +var8 = 4; +var9 = string__NativeString__to_s_with_length(var7, var8); +var6 = var9; +varonce = var6; +} +{ +{ /* Inline kernel#Object#!= (var5,var6) on */ +var_other = var6; +{ +var14 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_other) /* == on */; +var13 = var14; +} +var15 = !var13; +var11 = var15; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +var10 = var11; +} +if (var10){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var18 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var16) on */ +var21 = var16->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463); +show_backtrace(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} +var_m = var19; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var24 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var22 = var24; +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var27 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#realmainmodule (var25) on */ +var30 = var25->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 467); +show_backtrace(1); +} +var28 = var30; +RET_LABEL29:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var22,var28) on */ +var22->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var28; /* _mainmodule on */ +RET_LABEL31:(void)0; +} +} +{ +var32 = abstract_collection__SequenceRead__first(var_arguments); +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var32) on */ +var35 = var32->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var35 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var33 = var35; +RET_LABEL34:(void)0; +} +} +{ +var36 = abstract_compiler__AbstractCompilerVisitor__monomorphic_send(self, var_mmethod, var33, var_arguments); +} +var_res = var36; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var39 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var37,var_m) on */ +var37->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var_m; /* _mainmodule on */ +RET_LABEL40:(void)0; +} +} +var = var_res; +goto RET_LABEL; +} else { +} +{ +var41 = separate_compiler__MProperty__const_color(var_mmethod); +} +{ +var42 = separate_compiler__SeparateCompilerVisitor__table_send(self, var_mmethod, var_arguments, var41); +} +var = var42; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) { +val* var /* : nullable RuntimeVariable */; +val* var1 /* : nullable RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__send(self, p0, p1); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#before_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__before_send(val* self, val* p0, val* p1) { +val* var /* : nullable RuntimeVariable */; +val* var_mmethod /* var mmethod: MMethod */; +val* var_arguments /* var arguments: Array[RuntimeVariable] */; +val* var1 /* : null */; +val* var_res /* var res: nullable RuntimeVariable */; +val* var2 /* : nullable Object */; +val* var_recv /* var recv: RuntimeVariable */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var5 /* : AbstractCompiler */; +val* var7 /* : AbstractCompiler */; +val* var8 /* : ModelBuilder */; +val* var10 /* : ModelBuilder */; +val* var11 /* : ToolContext */; +val* var13 /* : ToolContext */; +val* var14 /* : OptionBool */; +val* var16 /* : OptionBool */; +val* var17 /* : nullable Object */; +val* var19 /* : nullable Object */; +short int var20 /* : Bool */; +short int var21 /* : Bool */; +short int var_ /* var : Bool */; +val* var22 /* : String */; +val* var24 /* : String */; +static val* varonce; +val* var25 /* : String */; +char* var26 /* : NativeString */; +long var27 /* : Int */; +val* var28 /* : FlatString */; +short int var29 /* : Bool */; +short int var30 /* : Bool */; +short int var_31 /* var : Bool */; +val* var32 /* : String */; +val* var34 /* : String */; +static val* varonce35; +val* var36 /* : String */; +char* var37 /* : NativeString */; +long var38 /* : Int */; +val* var39 /* : FlatString */; +short int var40 /* : Bool */; +short int var41 /* : Bool */; +short int var_consider_null /* var consider_null: Bool */; +short int var42 /* : Bool */; +val* var43 /* : MType */; +val* var45 /* : MType */; +short int var46 /* : Bool */; +int cltype; +int idtype; +short int var_47 /* var : Bool */; +short int var_maybenull /* var maybenull: Bool */; +static val* varonce48; +val* var49 /* : String */; +char* var50 /* : NativeString */; +long var51 /* : Int */; +val* var52 /* : FlatString */; +static val* varonce53; +val* var54 /* : String */; +char* var55 /* : NativeString */; +long var56 /* : Int */; +val* var57 /* : FlatString */; +val* var58 /* : Array[Object] */; +long var59 /* : Int */; +val* var60 /* : NativeArray[Object] */; +val* var61 /* : String */; +val* var62 /* : String */; +val* var64 /* : String */; +static val* varonce65; +val* var66 /* : String */; +char* var67 /* : NativeString */; +long var68 /* : Int */; +val* var69 /* : FlatString */; +short int var70 /* : Bool */; +short int var71 /* : Bool */; +val* var72 /* : MClassType */; +val* var73 /* : RuntimeVariable */; +long var74 /* : Int */; +val* var75 /* : nullable Object */; +val* var_arg /* var arg: RuntimeVariable */; +val* var76 /* : MType */; +val* var78 /* : MType */; +short int var79 /* : Bool */; +int cltype80; +int idtype81; +static val* varonce82; +val* var83 /* : String */; +char* var84 /* : NativeString */; +long var85 /* : Int */; +val* var86 /* : FlatString */; +static val* varonce87; +val* var88 /* : String */; +char* var89 /* : NativeString */; +long var90 /* : Int */; +val* var91 /* : FlatString */; +val* var92 /* : Array[Object] */; +long var93 /* : Int */; +val* var94 /* : NativeArray[Object] */; +val* var95 /* : String */; +val* var96 /* : MType */; +val* var98 /* : MType */; +short int var99 /* : Bool */; +int cltype100; +int idtype101; +static val* varonce102; +val* var103 /* : String */; +char* var104 /* : NativeString */; +long var105 /* : Int */; +val* var106 /* : FlatString */; +val* var107 /* : Array[Object] */; +long var108 /* : Int */; +val* var109 /* : NativeArray[Object] */; +val* var110 /* : String */; +static val* varonce111; +val* var112 /* : String */; +char* var113 /* : NativeString */; +long var114 /* : Int */; +val* var115 /* : FlatString */; +val* var116 /* : String */; +static val* varonce117; +val* var118 /* : String */; +char* var119 /* : NativeString */; +long var120 /* : Int */; +val* var121 /* : FlatString */; +val* var122 /* : Array[Object] */; +long var123 /* : Int */; +val* var124 /* : NativeArray[Object] */; +val* var125 /* : String */; +val* var126 /* : String */; +val* var128 /* : String */; +static val* varonce129; +val* var130 /* : String */; +char* var131 /* : NativeString */; +long var132 /* : Int */; +val* var133 /* : FlatString */; +short int var134 /* : Bool */; +short int var135 /* : Bool */; +val* var136 /* : MClassType */; +val* var137 /* : RuntimeVariable */; +long var138 /* : Int */; +val* var139 /* : nullable Object */; +val* var_arg140 /* var arg: RuntimeVariable */; +val* var141 /* : MType */; +val* var143 /* : MType */; +short int var144 /* : Bool */; +int cltype145; +int idtype146; +static val* varonce147; +val* var148 /* : String */; +char* var149 /* : NativeString */; +long var150 /* : Int */; +val* var151 /* : FlatString */; +static val* varonce152; +val* var153 /* : String */; +char* var154 /* : NativeString */; +long var155 /* : Int */; +val* var156 /* : FlatString */; +val* var157 /* : Array[Object] */; +long var158 /* : Int */; +val* var159 /* : NativeArray[Object] */; +val* var160 /* : String */; +val* var161 /* : MType */; +val* var163 /* : MType */; +short int var164 /* : Bool */; +int cltype165; +int idtype166; +static val* varonce167; +val* var168 /* : String */; +char* var169 /* : NativeString */; +long var170 /* : Int */; +val* var171 /* : FlatString */; +val* var172 /* : Array[Object] */; +long var173 /* : Int */; +val* var174 /* : NativeArray[Object] */; +val* var175 /* : String */; +static val* varonce176; +val* var177 /* : String */; +char* var178 /* : NativeString */; +long var179 /* : Int */; +val* var180 /* : FlatString */; +val* var181 /* : String */; +static val* varonce182; +val* var183 /* : String */; +char* var184 /* : NativeString */; +long var185 /* : Int */; +val* var186 /* : FlatString */; +val* var187 /* : Array[Object] */; +long var188 /* : Int */; +val* var189 /* : NativeArray[Object] */; +val* var190 /* : String */; +static val* varonce191; +val* var192 /* : String */; +char* var193 /* : NativeString */; +long var194 /* : Int */; +val* var195 /* : FlatString */; +static val* varonce196; +val* var197 /* : String */; +char* var198 /* : NativeString */; +long var199 /* : Int */; +val* var200 /* : FlatString */; +static val* varonce201; +val* var202 /* : String */; +char* var203 /* : NativeString */; +long var204 /* : Int */; +val* var205 /* : FlatString */; +short int var206 /* : Bool */; +val* var207 /* : AbstractCompiler */; +val* var209 /* : AbstractCompiler */; +val* var210 /* : ModelBuilder */; +val* var212 /* : ModelBuilder */; +val* var213 /* : ToolContext */; +val* var215 /* : ToolContext */; +val* var216 /* : OptionBool */; +val* var218 /* : OptionBool */; +val* var219 /* : nullable Object */; +val* var221 /* : nullable Object */; +short int var222 /* : Bool */; +short int var223 /* : Bool */; +short int var_224 /* var : Bool */; +short int var225 /* : Bool */; +val* var226 /* : String */; +val* var228 /* : String */; +static val* varonce229; +val* var230 /* : String */; +char* var231 /* : NativeString */; +long var232 /* : Int */; +val* var233 /* : FlatString */; +short int var234 /* : Bool */; +short int var235 /* : Bool */; +short int var_236 /* var : Bool */; +val* var237 /* : String */; +val* var239 /* : String */; +static val* varonce240; +val* var241 /* : String */; +char* var242 /* : NativeString */; +long var243 /* : Int */; +val* var244 /* : FlatString */; +short int var245 /* : Bool */; +short int var246 /* : Bool */; +val* var247 /* : null */; +short int var248 /* : Bool */; +short int var249 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var251 /* : Bool */; +short int var253 /* : Bool */; +val* var254 /* : MClassType */; +val* var255 /* : RuntimeVariable */; +long var256 /* : Int */; +val* var257 /* : nullable Object */; +val* var_arg258 /* var arg: RuntimeVariable */; +val* var259 /* : MType */; +val* var261 /* : MType */; +short int var262 /* : Bool */; +int cltype263; +int idtype264; +val* var265 /* : String */; +val* var267 /* : String */; +static val* varonce268; +val* var269 /* : String */; +char* var270 /* : NativeString */; +long var271 /* : Int */; +val* var272 /* : FlatString */; +short int var273 /* : Bool */; +short int var274 /* : Bool */; +static val* varonce275; +val* var276 /* : String */; +char* var277 /* : NativeString */; +long var278 /* : Int */; +val* var279 /* : FlatString */; +val* var280 /* : Array[Object] */; +long var281 /* : Int */; +val* var282 /* : NativeArray[Object] */; +val* var283 /* : String */; +static val* varonce284; +val* var285 /* : String */; +char* var286 /* : NativeString */; +long var287 /* : Int */; +val* var288 /* : FlatString */; +val* var289 /* : Array[Object] */; +long var290 /* : Int */; +val* var291 /* : NativeArray[Object] */; +val* var292 /* : String */; +static val* varonce293; +val* var294 /* : String */; +char* var295 /* : NativeString */; +long var296 /* : Int */; +val* var297 /* : FlatString */; +static val* varonce298; +val* var299 /* : String */; +char* var300 /* : NativeString */; +long var301 /* : Int */; +val* var302 /* : FlatString */; +var_mmethod = p0; +var_arguments = p1; +var1 = NULL; +var_res = var1; +{ +var2 = abstract_collection__SequenceRead__first(var_arguments); +} +var_recv = var2; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var7 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var5) on */ +var10 = var5->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var8) on */ +var13 = var8->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_no_check_null (var11) on */ +var16 = var11->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_null].val; /* _opt_no_check_null on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 57); +show_backtrace(1); +} +var14 = var16; +RET_LABEL15:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var14) on */ +var19 = var14->attrs[COLOR_opts__Option___value].val; /* _value on */ +var17 = var19; +RET_LABEL18:(void)0; +} +} +var20 = ((struct instance_kernel__Bool*)var17)->value; /* autounbox from nullable Object to Bool */; +var21 = !var20; +var_ = var21; +if (var21){ +var4 = var_; +} else { +{ +{ /* Inline model#MProperty#name (var_mmethod) on */ +var24 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var22 = var24; +RET_LABEL23:(void)0; +} +} +if (varonce) { +var25 = varonce; +} else { +var26 = "=="; +var27 = 2; +var28 = string__NativeString__to_s_with_length(var26, var27); +var25 = var28; +varonce = var25; +} +{ +var30 = string__FlatString___61d_61d(var22, var25); +var29 = var30; +} +var4 = var29; +} +var_31 = var4; +if (var4){ +var3 = var_31; +} else { +{ +{ /* Inline model#MProperty#name (var_mmethod) on */ +var34 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var34 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var32 = var34; +RET_LABEL33:(void)0; +} +} +if (varonce35) { +var36 = varonce35; +} else { +var37 = "!="; +var38 = 2; +var39 = string__NativeString__to_s_with_length(var37, var38); +var36 = var39; +varonce35 = var36; +} +{ +var41 = string__FlatString___61d_61d(var32, var36); +var40 = var41; +} +var3 = var40; +} +var_consider_null = var3; +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_recv) on */ +var45 = var_recv->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var45 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var43 = var45; +RET_LABEL44:(void)0; +} +} +/* isa MNullableType */ +cltype = type_model__MNullableType.color; +idtype = type_model__MNullableType.id; +if(cltype >= var43->type->table_size) { +var46 = 0; +} else { +var46 = var43->type->type_table[cltype] == idtype; +} +var_47 = var46; +if (var46){ +var42 = var_consider_null; +} else { +var42 = var_47; +} +var_maybenull = var42; +if (var_maybenull){ +if (varonce48) { +var49 = varonce48; +} else { +var50 = "if ("; +var51 = 4; +var52 = string__NativeString__to_s_with_length(var50, var51); +var49 = var52; +varonce48 = var49; +} +if (varonce53) { +var54 = varonce53; +} else { +var55 = " == NULL) {"; +var56 = 11; +var57 = string__NativeString__to_s_with_length(var55, var56); +var54 = var57; +varonce53 = var54; +} +var58 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var58 = array_instance Array[Object] */ +var59 = 3; +var60 = NEW_array__NativeArray(var59, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var60)->values[0] = (val*) var49; +((struct instance_array__NativeArray*)var60)->values[1] = (val*) var_recv; +((struct instance_array__NativeArray*)var60)->values[2] = (val*) var54; +{ +((void (*)(val*, val*, long))(var58->class->vft[COLOR_array__Array__with_native]))(var58, var60, var59) /* with_native on */; +} +} +{ +var61 = ((val* (*)(val*))(var58->class->vft[COLOR_string__Object__to_s]))(var58) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var61); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +{ +{ /* Inline model#MProperty#name (var_mmethod) on */ +var64 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var64 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var62 = var64; +RET_LABEL63:(void)0; +} +} +if (varonce65) { +var66 = varonce65; +} else { +var67 = "=="; +var68 = 2; +var69 = string__NativeString__to_s_with_length(var67, var68); +var66 = var69; +varonce65 = var66; +} +{ +var71 = string__FlatString___61d_61d(var62, var66); +var70 = var71; +} +if (var70){ +{ +var72 = abstract_compiler__AbstractCompilerVisitor__bool_type(self); +} +{ +var73 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var72); +} +var_res = var73; +var74 = 1; +{ +var75 = array__Array___91d_93d(var_arguments, var74); +} +var_arg = var75; +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg) on */ +var78 = var_arg->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var78 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var76 = var78; +RET_LABEL77:(void)0; +} +} +/* isa MNullableType */ +cltype80 = type_model__MNullableType.color; +idtype81 = type_model__MNullableType.id; +if(cltype80 >= var76->type->table_size) { +var79 = 0; +} else { +var79 = var76->type->type_table[cltype80] == idtype81; +} +if (var79){ +if (varonce82) { +var83 = varonce82; +} else { +var84 = " = ("; +var85 = 4; +var86 = string__NativeString__to_s_with_length(var84, var85); +var83 = var86; +varonce82 = var83; +} +if (varonce87) { +var88 = varonce87; +} else { +var89 = " == NULL);"; +var90 = 10; +var91 = string__NativeString__to_s_with_length(var89, var90); +var88 = var91; +varonce87 = var88; +} +var92 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var92 = array_instance Array[Object] */ +var93 = 4; +var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var94)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var94)->values[1] = (val*) var83; +((struct instance_array__NativeArray*)var94)->values[2] = (val*) var_arg; +((struct instance_array__NativeArray*)var94)->values[3] = (val*) var88; +{ +((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on */; +} +} +{ +var95 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var95); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg) on */ +var98 = var_arg->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var98 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var96 = var98; +RET_LABEL97:(void)0; +} +} +/* isa MNullType */ +cltype100 = type_model__MNullType.color; +idtype101 = type_model__MNullType.id; +if(cltype100 >= var96->type->table_size) { +var99 = 0; +} else { +var99 = var96->type->type_table[cltype100] == idtype101; +} +if (var99){ +if (varonce102) { +var103 = varonce102; +} else { +var104 = " = 1; /* is null */"; +var105 = 19; +var106 = string__NativeString__to_s_with_length(var104, var105); +var103 = var106; +varonce102 = var103; +} +var107 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var107 = array_instance Array[Object] */ +var108 = 2; +var109 = NEW_array__NativeArray(var108, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var109)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var109)->values[1] = (val*) var103; +{ +((void (*)(val*, val*, long))(var107->class->vft[COLOR_array__Array__with_native]))(var107, var109, var108) /* with_native on */; +} +} +{ +var110 = ((val* (*)(val*))(var107->class->vft[COLOR_string__Object__to_s]))(var107) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var110); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +if (varonce111) { +var112 = varonce111; +} else { +var113 = " = 0; /* "; +var114 = 9; +var115 = string__NativeString__to_s_with_length(var113, var114); +var112 = var115; +varonce111 = var112; +} +{ +var116 = abstract_compiler__RuntimeVariable__inspect(var_arg); +} +if (varonce117) { +var118 = varonce117; +} else { +var119 = " cannot be null */"; +var120 = 18; +var121 = string__NativeString__to_s_with_length(var119, var120); +var118 = var121; +varonce117 = var118; +} +var122 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var122 = array_instance Array[Object] */ +var123 = 4; +var124 = NEW_array__NativeArray(var123, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var124)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var124)->values[1] = (val*) var112; +((struct instance_array__NativeArray*)var124)->values[2] = (val*) var116; +((struct instance_array__NativeArray*)var124)->values[3] = (val*) var118; +{ +((void (*)(val*, val*, long))(var122->class->vft[COLOR_array__Array__with_native]))(var122, var124, var123) /* with_native on */; +} +} +{ +var125 = ((val* (*)(val*))(var122->class->vft[COLOR_string__Object__to_s]))(var122) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var125); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +} +} else { +{ +{ /* Inline model#MProperty#name (var_mmethod) on */ +var128 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var128 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var126 = var128; +RET_LABEL127:(void)0; +} +} +if (varonce129) { +var130 = varonce129; +} else { +var131 = "!="; +var132 = 2; +var133 = string__NativeString__to_s_with_length(var131, var132); +var130 = var133; +varonce129 = var130; +} +{ +var135 = string__FlatString___61d_61d(var126, var130); +var134 = var135; +} +if (var134){ +{ +var136 = abstract_compiler__AbstractCompilerVisitor__bool_type(self); +} +{ +var137 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var136); +} +var_res = var137; +var138 = 1; +{ +var139 = array__Array___91d_93d(var_arguments, var138); +} +var_arg140 = var139; +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg140) on */ +var143 = var_arg140->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var143 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var141 = var143; +RET_LABEL142:(void)0; +} +} +/* isa MNullableType */ +cltype145 = type_model__MNullableType.color; +idtype146 = type_model__MNullableType.id; +if(cltype145 >= var141->type->table_size) { +var144 = 0; +} else { +var144 = var141->type->type_table[cltype145] == idtype146; +} +if (var144){ +if (varonce147) { +var148 = varonce147; +} else { +var149 = " = ("; +var150 = 4; +var151 = string__NativeString__to_s_with_length(var149, var150); +var148 = var151; +varonce147 = var148; +} +if (varonce152) { +var153 = varonce152; +} else { +var154 = " != NULL);"; +var155 = 10; +var156 = string__NativeString__to_s_with_length(var154, var155); +var153 = var156; +varonce152 = var153; +} +var157 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var157 = array_instance Array[Object] */ +var158 = 4; +var159 = NEW_array__NativeArray(var158, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var159)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var159)->values[1] = (val*) var148; +((struct instance_array__NativeArray*)var159)->values[2] = (val*) var_arg140; +((struct instance_array__NativeArray*)var159)->values[3] = (val*) var153; +{ +((void (*)(val*, val*, long))(var157->class->vft[COLOR_array__Array__with_native]))(var157, var159, var158) /* with_native on */; +} +} +{ +var160 = ((val* (*)(val*))(var157->class->vft[COLOR_string__Object__to_s]))(var157) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var160); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg140) on */ +var163 = var_arg140->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var163 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var161 = var163; +RET_LABEL162:(void)0; +} +} +/* isa MNullType */ +cltype165 = type_model__MNullType.color; +idtype166 = type_model__MNullType.id; +if(cltype165 >= var161->type->table_size) { +var164 = 0; +} else { +var164 = var161->type->type_table[cltype165] == idtype166; +} +if (var164){ +if (varonce167) { +var168 = varonce167; +} else { +var169 = " = 0; /* is null */"; +var170 = 19; +var171 = string__NativeString__to_s_with_length(var169, var170); +var168 = var171; +varonce167 = var168; +} +var172 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var172 = array_instance Array[Object] */ +var173 = 2; +var174 = NEW_array__NativeArray(var173, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var174)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var174)->values[1] = (val*) var168; +{ +((void (*)(val*, val*, long))(var172->class->vft[COLOR_array__Array__with_native]))(var172, var174, var173) /* with_native on */; +} +} +{ +var175 = ((val* (*)(val*))(var172->class->vft[COLOR_string__Object__to_s]))(var172) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var175); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +if (varonce176) { +var177 = varonce176; +} else { +var178 = " = 1; /* "; +var179 = 9; +var180 = string__NativeString__to_s_with_length(var178, var179); +var177 = var180; +varonce176 = var177; +} +{ +var181 = abstract_compiler__RuntimeVariable__inspect(var_arg140); +} +if (varonce182) { +var183 = varonce182; +} else { +var184 = " cannot be null */"; +var185 = 18; +var186 = string__NativeString__to_s_with_length(var184, var185); +var183 = var186; +varonce182 = var183; +} +var187 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var187 = array_instance Array[Object] */ +var188 = 4; +var189 = NEW_array__NativeArray(var188, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var189)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var189)->values[1] = (val*) var177; +((struct instance_array__NativeArray*)var189)->values[2] = (val*) var181; +((struct instance_array__NativeArray*)var189)->values[3] = (val*) var183; +{ +((void (*)(val*, val*, long))(var187->class->vft[COLOR_array__Array__with_native]))(var187, var189, var188) /* with_native on */; +} +} +{ +var190 = ((val* (*)(val*))(var187->class->vft[COLOR_string__Object__to_s]))(var187) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var190); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +} +} else { +if (varonce191) { +var192 = varonce191; +} else { +var193 = "Receiver is null"; +var194 = 16; +var195 = string__NativeString__to_s_with_length(var193, var194); +var192 = var195; +varonce191 = var192; +} +{ +abstract_compiler__AbstractCompilerVisitor__add_abort(self, var192); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on */ +} +} +} +if (varonce196) { +var197 = varonce196; +} else { +var198 = "} else {"; +var199 = 8; +var200 = string__NativeString__to_s_with_length(var198, var199); +var197 = var200; +varonce196 = var197; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var197); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +if (varonce201) { +var202 = varonce201; +} else { +var203 = "{"; +var204 = 1; +var205 = string__NativeString__to_s_with_length(var203, var204); +var202 = var205; +varonce201 = var202; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var202); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var209 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var209 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var207 = var209; +RET_LABEL208:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var207) on */ +var212 = var207->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var212 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var210 = var212; +RET_LABEL211:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var210) on */ +var215 = var210->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var215 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var213 = var215; +RET_LABEL214:(void)0; +} +} +{ +{ /* Inline separate_compiler#ToolContext#opt_no_shortcut_equate (var213) on */ +var218 = var213->attrs[COLOR_separate_compiler__ToolContext___opt_no_shortcut_equate].val; /* _opt_no_shortcut_equate on */ +if (unlikely(var218 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_equate"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 30); +show_backtrace(1); +} +var216 = var218; +RET_LABEL217:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var216) on */ +var221 = var216->attrs[COLOR_opts__Option___value].val; /* _value on */ +var219 = var221; +RET_LABEL220:(void)0; +} +} +var222 = ((struct instance_kernel__Bool*)var219)->value; /* autounbox from nullable Object to Bool */; +var223 = !var222; +var_224 = var223; +if (var223){ +{ +{ /* Inline model#MProperty#name (var_mmethod) on */ +var228 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var228 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var226 = var228; +RET_LABEL227:(void)0; +} +} +if (varonce229) { +var230 = varonce229; +} else { +var231 = "=="; +var232 = 2; +var233 = string__NativeString__to_s_with_length(var231, var232); +var230 = var233; +varonce229 = var230; +} +{ +var235 = string__FlatString___61d_61d(var226, var230); +var234 = var235; +} +var_236 = var234; +if (var234){ +var225 = var_236; +} else { +{ +{ /* Inline model#MProperty#name (var_mmethod) on */ +var239 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var239 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var237 = var239; +RET_LABEL238:(void)0; +} +} +if (varonce240) { +var241 = varonce240; +} else { +var242 = "!="; +var243 = 2; +var244 = string__NativeString__to_s_with_length(var242, var243); +var241 = var244; +varonce240 = var241; +} +{ +var246 = string__FlatString___61d_61d(var237, var241); +var245 = var246; +} +var225 = var245; +} +var206 = var225; +} else { +var206 = var_224; +} +if (var206){ +var247 = NULL; +if (var_res == NULL) { +var248 = 1; /* is null */ +} else { +var248 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_res,var247) on */ +var_other = var247; +{ +{ /* Inline kernel#Object#is_same_instance (var_res,var_other) on */ +var253 = var_res == var_other; +var251 = var253; +goto RET_LABEL252; +RET_LABEL252:(void)0; +} +} +var249 = var251; +goto RET_LABEL250; +RET_LABEL250:(void)0; +} +var248 = var249; +} +if (var248){ +{ +var254 = abstract_compiler__AbstractCompilerVisitor__bool_type(self); +} +{ +var255 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var254); +} +var_res = var255; +} else { +} +var256 = 1; +{ +var257 = array__Array___91d_93d(var_arguments, var256); +} +var_arg258 = var257; +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg258) on */ +var261 = var_arg258->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var261 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var259 = var261; +RET_LABEL260:(void)0; +} +} +/* isa MNullType */ +cltype263 = type_model__MNullType.color; +idtype264 = type_model__MNullType.id; +if(cltype263 >= var259->type->table_size) { +var262 = 0; +} else { +var262 = var259->type->type_table[cltype263] == idtype264; +} +if (var262){ +{ +{ /* Inline model#MProperty#name (var_mmethod) on */ +var267 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var267 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var265 = var267; +RET_LABEL266:(void)0; +} +} +if (varonce268) { +var269 = varonce268; +} else { +var270 = "=="; +var271 = 2; +var272 = string__NativeString__to_s_with_length(var270, var271); +var269 = var272; +varonce268 = var269; +} +{ +var274 = string__FlatString___61d_61d(var265, var269); +var273 = var274; +} +if (var273){ +if (varonce275) { +var276 = varonce275; +} else { +var277 = " = 0; /* arg is null but recv is not */"; +var278 = 39; +var279 = string__NativeString__to_s_with_length(var277, var278); +var276 = var279; +varonce275 = var276; +} +var280 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var280 = array_instance Array[Object] */ +var281 = 2; +var282 = NEW_array__NativeArray(var281, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var282)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var282)->values[1] = (val*) var276; +{ +((void (*)(val*, val*, long))(var280->class->vft[COLOR_array__Array__with_native]))(var280, var282, var281) /* with_native on */; +} +} +{ +var283 = ((val* (*)(val*))(var280->class->vft[COLOR_string__Object__to_s]))(var280) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var283); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +if (varonce284) { +var285 = varonce284; +} else { +var286 = " = 1; /* arg is null and recv is not */"; +var287 = 39; +var288 = string__NativeString__to_s_with_length(var286, var287); +var285 = var288; +varonce284 = var285; +} +var289 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var289 = array_instance Array[Object] */ +var290 = 2; +var291 = NEW_array__NativeArray(var290, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var291)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var291)->values[1] = (val*) var285; +{ +((void (*)(val*, val*, long))(var289->class->vft[COLOR_array__Array__with_native]))(var289, var291, var290) /* with_native on */; +} +} +{ +var292 = ((val* (*)(val*))(var289->class->vft[COLOR_string__Object__to_s]))(var289) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var292); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +if (varonce293) { +var294 = varonce293; +} else { +var295 = "}"; +var296 = 1; +var297 = string__NativeString__to_s_with_length(var295, var296); +var294 = var297; +varonce293 = var294; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var294); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce298) { +var299 = varonce298; +} else { +var300 = "if (0) {"; +var301 = 8; +var302 = string__NativeString__to_s_with_length(var300, var301); +var299 = var302; +varonce298 = var299; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var299); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +} +} else { +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#before_send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__before_send(val* self, val* p0, val* p1) { +val* var /* : nullable RuntimeVariable */; +val* var1 /* : nullable RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__before_send(self, p0, p1); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#table_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable RuntimeVariable */; +val* var_mmethod /* var mmethod: MMethod */; +val* var_arguments /* var arguments: Array[RuntimeVariable] */; +val* var_const_color /* var const_color: String */; +val* var1 /* : AbstractCompiler */; +val* var3 /* : AbstractCompiler */; +val* var4 /* : ModelBuilder */; +val* var6 /* : ModelBuilder */; +val* var_ /* var : ModelBuilder */; +long var7 /* : Int */; +long var9 /* : Int */; +long var10 /* : Int */; +long var11 /* : Int */; +short int var13 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var14 /* : Int */; +val* var16 /* : AbstractCompiler */; +val* var18 /* : AbstractCompiler */; +val* var19 /* : ModelBuilder */; +val* var21 /* : ModelBuilder */; +val* var22 /* : ToolContext */; +val* var24 /* : ToolContext */; +val* var25 /* : OptionBool */; +val* var27 /* : OptionBool */; +val* var28 /* : nullable Object */; +val* var30 /* : nullable Object */; +short int var31 /* : Bool */; +static val* varonce; +val* var32 /* : String */; +char* var33 /* : NativeString */; +long var34 /* : Int */; +val* var35 /* : FlatString */; +long var36 /* : Int */; +long var38 /* : Int */; +val* var39 /* : MPropDef */; +val* var41 /* : MPropDef */; +val* var42 /* : nullable MSignature */; +val* var44 /* : nullable MSignature */; +long var45 /* : Int */; +long var46 /* : Int */; +long var47 /* : Int */; +short int var49 /* : Bool */; +int cltype50; +int idtype51; +const char* var_class_name52; +long var53 /* : Int */; +short int var54 /* : Bool */; +short int var55 /* : Bool */; +short int var57 /* : Bool */; +static val* varonce58; +val* var59 /* : String */; +char* var60 /* : NativeString */; +long var61 /* : Int */; +val* var62 /* : FlatString */; +static val* varonce63; +val* var64 /* : String */; +char* var65 /* : NativeString */; +long var66 /* : Int */; +val* var67 /* : FlatString */; +long var68 /* : Int */; +long var70 /* : Int */; +static val* varonce71; +val* var72 /* : String */; +char* var73 /* : NativeString */; +long var74 /* : Int */; +val* var75 /* : FlatString */; +val* var76 /* : Array[Object] */; +long var77 /* : Int */; +val* var78 /* : NativeArray[Object] */; +val* var79 /* : Object */; +val* var80 /* : String */; +val* var81 /* : nullable Object */; +val* var_recv /* var recv: RuntimeVariable */; +val* var82 /* : nullable RuntimeVariable */; +val* var_res0 /* var res0: nullable RuntimeVariable */; +val* var83 /* : MPropDef */; +val* var85 /* : MPropDef */; +val* var86 /* : nullable MSignature */; +val* var88 /* : nullable MSignature */; +val* var89 /* : MPropDef */; +val* var91 /* : MPropDef */; +val* var92 /* : MClassDef */; +val* var94 /* : MClassDef */; +val* var95 /* : MClassType */; +val* var97 /* : MClassType */; +val* var98 /* : MPropDef */; +val* var100 /* : MPropDef */; +val* var101 /* : MClassDef */; +val* var103 /* : MClassDef */; +val* var104 /* : MClassType */; +val* var106 /* : MClassType */; +val* var107 /* : MPropDef */; +val* var109 /* : MPropDef */; +val* var110 /* : MClassDef */; +val* var112 /* : MClassDef */; +val* var113 /* : MModule */; +val* var115 /* : MModule */; +short int var116 /* : Bool */; +val* var117 /* : MSignature */; +val* var_msignature /* var msignature: MSignature */; +val* var118 /* : nullable MType */; +val* var120 /* : nullable MType */; +val* var_ret /* var ret: nullable MType */; +val* var121 /* : null */; +short int var122 /* : Bool */; +short int var123 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var125 /* : Bool */; +short int var127 /* : Bool */; +val* var128 /* : null */; +val* var_res /* var res: nullable RuntimeVariable */; +val* var129 /* : RuntimeVariable */; +val* var130 /* : FlatBuffer */; +val* var_s /* var s: FlatBuffer */; +val* var131 /* : FlatBuffer */; +val* var_ss /* var ss: FlatBuffer */; +static val* varonce132; +val* var133 /* : String */; +char* var134 /* : NativeString */; +long var135 /* : Int */; +val* var136 /* : FlatString */; +val* var137 /* : Array[Object] */; +long var138 /* : Int */; +val* var139 /* : NativeArray[Object] */; +val* var140 /* : String */; +long var141 /* : Int */; +long var_i /* var i: Int */; +long var142 /* : Int */; +long var_143 /* var : Int */; +short int var144 /* : Bool */; +short int var146 /* : Bool */; +int cltype147; +int idtype148; +const char* var_class_name149; +short int var150 /* : Bool */; +long var151 /* : Int */; +long var152 /* : Int */; +short int var154 /* : Bool */; +int cltype155; +int idtype156; +const char* var_class_name157; +long var158 /* : Int */; +val* var159 /* : nullable Object */; +val* var_a /* var a: RuntimeVariable */; +val* var160 /* : Array[MParameter] */; +val* var162 /* : Array[MParameter] */; +val* var163 /* : nullable Object */; +val* var164 /* : MType */; +val* var166 /* : MType */; +val* var_t /* var t: MType */; +long var167 /* : Int */; +long var169 /* : Int */; +short int var170 /* : Bool */; +short int var171 /* : Bool */; +short int var173 /* : Bool */; +long var174 /* : Int */; +long var175 /* : Int */; +short int var177 /* : Bool */; +int cltype178; +int idtype179; +const char* var_class_name180; +long var181 /* : Int */; +val* var182 /* : nullable Object */; +val* var183 /* : MType */; +val* var185 /* : MType */; +static val* varonce186; +val* var187 /* : String */; +char* var188 /* : NativeString */; +long var189 /* : Int */; +val* var190 /* : FlatString */; +val* var191 /* : String */; +val* var192 /* : Array[Object] */; +long var193 /* : Int */; +val* var194 /* : NativeArray[Object] */; +val* var195 /* : String */; +val* var196 /* : RuntimeVariable */; +static val* varonce197; +val* var198 /* : String */; +char* var199 /* : NativeString */; +long var200 /* : Int */; +val* var201 /* : FlatString */; +val* var202 /* : Array[Object] */; +long var203 /* : Int */; +val* var204 /* : NativeArray[Object] */; +val* var205 /* : String */; +long var206 /* : Int */; +long var207 /* : Int */; +val* var208 /* : null */; +short int var209 /* : Bool */; +short int var210 /* : Bool */; +short int var212 /* : Bool */; +short int var214 /* : Bool */; +static val* varonce215; +val* var216 /* : String */; +char* var217 /* : NativeString */; +long var218 /* : Int */; +val* var219 /* : FlatString */; +val* var_r /* var r: nullable Object */; +val* var220 /* : String */; +static val* varonce221; +val* var222 /* : String */; +char* var223 /* : NativeString */; +long var224 /* : Int */; +val* var225 /* : FlatString */; +static val* varonce226; +val* var227 /* : String */; +char* var228 /* : NativeString */; +long var229 /* : Int */; +val* var230 /* : FlatString */; +static val* varonce231; +val* var232 /* : String */; +char* var233 /* : NativeString */; +long var234 /* : Int */; +val* var235 /* : FlatString */; +val* var236 /* : nullable Object */; +static val* varonce237; +val* var238 /* : String */; +char* var239 /* : NativeString */; +long var240 /* : Int */; +val* var241 /* : FlatString */; +static val* varonce242; +val* var243 /* : String */; +char* var244 /* : NativeString */; +long var245 /* : Int */; +val* var246 /* : FlatString */; +static val* varonce247; +val* var248 /* : String */; +char* var249 /* : NativeString */; +long var250 /* : Int */; +val* var251 /* : FlatString */; +static val* varonce252; +val* var253 /* : String */; +char* var254 /* : NativeString */; +long var255 /* : Int */; +val* var256 /* : FlatString */; +val* var257 /* : nullable Object */; +val* var258 /* : String */; +static val* varonce259; +val* var260 /* : String */; +char* var261 /* : NativeString */; +long var262 /* : Int */; +val* var263 /* : FlatString */; +val* var264 /* : Array[Object] */; +long var265 /* : Int */; +val* var266 /* : NativeArray[Object] */; +val* var267 /* : String */; +val* var_call /* var call: String */; +val* var268 /* : null */; +short int var269 /* : Bool */; +short int var270 /* : Bool */; +val* var_other272 /* var other: nullable Object */; +short int var273 /* : Bool */; +short int var274 /* : Bool */; +short int var275 /* : Bool */; +static val* varonce276; +val* var277 /* : String */; +char* var278 /* : NativeString */; +long var279 /* : Int */; +val* var280 /* : FlatString */; +static val* varonce281; +val* var282 /* : String */; +char* var283 /* : NativeString */; +long var284 /* : Int */; +val* var285 /* : FlatString */; +val* var286 /* : Array[Object] */; +long var287 /* : Int */; +val* var288 /* : NativeArray[Object] */; +val* var289 /* : String */; +static val* varonce290; +val* var291 /* : String */; +char* var292 /* : NativeString */; +long var293 /* : Int */; +val* var294 /* : FlatString */; +val* var295 /* : Array[Object] */; +long var296 /* : Int */; +val* var297 /* : NativeArray[Object] */; +val* var298 /* : String */; +val* var299 /* : null */; +short int var300 /* : Bool */; +short int var301 /* : Bool */; +short int var303 /* : Bool */; +short int var304 /* : Bool */; +short int var305 /* : Bool */; +val* var306 /* : null */; +short int var307 /* : Bool */; +short int var308 /* : Bool */; +short int var310 /* : Bool */; +short int var311 /* : Bool */; +short int var312 /* : Bool */; +static val* varonce313; +val* var314 /* : String */; +char* var315 /* : NativeString */; +long var316 /* : Int */; +val* var317 /* : FlatString */; +var_mmethod = p0; +var_arguments = p1; +var_const_color = p2; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on */ +var6 = var1->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var4 = var6; +RET_LABEL5:(void)0; +} +} +var_ = var4; +{ +{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var_) on */ +var9 = var_->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on */ +var7 = var9; +RET_LABEL8:(void)0; +} +} +var10 = 1; +{ +{ /* Inline kernel#Int#+ (var7,var10) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var13 = 1; /* easy isa OTHER*/ +if (unlikely(!var13)) { +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", 374); +show_backtrace(1); +} +var14 = var7 + var10; +var11 = var14; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +} +{ +{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables= (var_,var11) on */ +var_->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_tables].l = var11; /* _nb_invok_by_tables on */ +RET_LABEL15:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var18 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var16) on */ +var21 = var16->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var19) on */ +var24 = var19->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var22 = var24; +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var22) on */ +var27 = var22->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 63); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var25) on */ +var30 = var25->attrs[COLOR_opts__Option___value].val; /* _value on */ +var28 = var30; +RET_LABEL29:(void)0; +} +} +var31 = ((struct instance_kernel__Bool*)var28)->value; /* autounbox from nullable Object to Bool */; +if (var31){ +if (varonce) { +var32 = varonce; +} else { +var33 = "count_invoke_by_tables++;"; +var34 = 25; +var35 = string__NativeString__to_s_with_length(var33, var34); +var32 = var35; +varonce = var32; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var32); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +} +{ +{ /* Inline array#AbstractArrayRead#length (var_arguments) on */ +var38 = var_arguments->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var36 = var38; +RET_LABEL37:(void)0; +} +} +{ +{ /* Inline model#MProperty#intro (var_mmethod) on */ +var41 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var41 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var39 = var41; +RET_LABEL40:(void)0; +} +} +{ +{ /* Inline model#MMethodDef#msignature (var39) on */ +var44 = var39->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var42 = var44; +RET_LABEL43:(void)0; +} +} +if (var42 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1167); +show_backtrace(1); +} else { +var45 = model__MSignature__arity(var42); +} +var46 = 1; +{ +{ /* Inline kernel#Int#+ (var45,var46) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var49 = 1; /* easy isa OTHER*/ +if (unlikely(!var49)) { +var_class_name52 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var53 = var45 + var46; +var47 = var53; +goto RET_LABEL48; +RET_LABEL48:(void)0; +} +} +{ +{ /* Inline kernel#Int#== (var36,var47) on */ +var57 = var36 == var47; +var55 = var57; +goto RET_LABEL56; +RET_LABEL56:(void)0; +} +var54 = var55; +} +if (unlikely(!var54)) { +if (varonce58) { +var59 = varonce58; +} else { +var60 = "Invalid arity for "; +var61 = 18; +var62 = string__NativeString__to_s_with_length(var60, var61); +var59 = var62; +varonce58 = var59; +} +if (varonce63) { +var64 = varonce63; +} else { +var65 = ". "; +var66 = 2; +var67 = string__NativeString__to_s_with_length(var65, var66); +var64 = var67; +varonce63 = var64; +} +{ +{ /* Inline array#AbstractArrayRead#length (var_arguments) on */ +var70 = var_arguments->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var68 = var70; +RET_LABEL69:(void)0; +} +} +if (varonce71) { +var72 = varonce71; +} else { +var73 = " arguments given."; +var74 = 17; +var75 = string__NativeString__to_s_with_length(var73, var74); +var72 = var75; +varonce71 = var72; +} +var76 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var76 = array_instance Array[Object] */ +var77 = 5; +var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var78)->values[0] = (val*) var59; +((struct instance_array__NativeArray*)var78)->values[1] = (val*) var_mmethod; +((struct instance_array__NativeArray*)var78)->values[2] = (val*) var64; +var79 = BOX_kernel__Int(var68); /* autobox from Int to Object */ +((struct instance_array__NativeArray*)var78)->values[3] = (val*) var79; +((struct instance_array__NativeArray*)var78)->values[4] = (val*) var72; +{ +((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on */; +} +} +{ +var80 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__debug(self, var80); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on */ +} +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1167); +show_backtrace(1); +} +{ +var81 = abstract_collection__SequenceRead__first(var_arguments); +} +var_recv = var81; +{ +var82 = separate_compiler__SeparateCompilerVisitor__before_send(self, var_mmethod, var_arguments); +} +var_res0 = var82; +{ +{ /* Inline model#MProperty#intro (var_mmethod) on */ +var85 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var85 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var83 = var85; +RET_LABEL84:(void)0; +} +} +{ +{ /* Inline model#MMethodDef#msignature (var83) on */ +var88 = var83->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var86 = var88; +RET_LABEL87:(void)0; +} +} +{ +{ /* Inline model#MProperty#intro (var_mmethod) on */ +var91 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var91 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var89 = var91; +RET_LABEL90:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var89) on */ +var94 = var89->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var94 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var92 = var94; +RET_LABEL93:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var92) on */ +var97 = var92->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var97 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var95 = var97; +RET_LABEL96:(void)0; +} +} +{ +{ /* Inline model#MProperty#intro (var_mmethod) on */ +var100 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var100 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var98 = var100; +RET_LABEL99:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var98) on */ +var103 = var98->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var103 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var101 = var103; +RET_LABEL102:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var101) on */ +var106 = var101->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var106 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var104 = var106; +RET_LABEL105:(void)0; +} +} +{ +{ /* Inline model#MProperty#intro (var_mmethod) on */ +var109 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var109 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var107 = var109; +RET_LABEL108:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var107) on */ +var112 = var107->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var112 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var110 = var112; +RET_LABEL111:(void)0; +} +} +{ +{ /* Inline model#MClassDef#mmodule (var110) on */ +var115 = var110->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on */ +if (unlikely(var115 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489); +show_backtrace(1); +} +var113 = var115; +RET_LABEL114:(void)0; +} +} +var116 = 1; +if (var86 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1173); +show_backtrace(1); +} else { +var117 = model__MSignature__resolve_for(var86, var95, var104, var113, var116); +} +var_msignature = var117; +{ +{ /* Inline model#MSignature#return_mtype (var_msignature) on */ +var120 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on */ +var118 = var120; +RET_LABEL119:(void)0; +} +} +var_ret = var118; +var121 = NULL; +if (var_ret == NULL) { +var122 = 1; /* is null */ +} else { +var122 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_ret,var121) on */ +var_other = var121; +{ +{ /* Inline kernel#Object#is_same_instance (var_ret,var_other) on */ +var127 = var_ret == var_other; +var125 = var127; +goto RET_LABEL126; +RET_LABEL126:(void)0; +} +} +var123 = var125; +goto RET_LABEL124; +RET_LABEL124:(void)0; +} +var122 = var123; +} +if (var122){ +var128 = NULL; +var_res = var128; +} else { +{ +var129 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_ret); +} +var_res = var129; +} +var130 = NEW_string__FlatBuffer(&type_string__FlatBuffer); +{ +((void (*)(val*))(var130->class->vft[COLOR_kernel__Object__init]))(var130) /* init on */; +} +var_s = var130; +var131 = NEW_string__FlatBuffer(&type_string__FlatBuffer); +{ +((void (*)(val*))(var131->class->vft[COLOR_kernel__Object__init]))(var131) /* init on */; +} +var_ss = var131; +if (varonce132) { +var133 = varonce132; +} else { +var134 = "val*"; +var135 = 4; +var136 = string__NativeString__to_s_with_length(var134, var135); +var133 = var136; +varonce132 = var133; +} +{ +string__FlatBuffer__append(var_s, var133); /* Direct call string#FlatBuffer#append on */ +} +var137 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var137 = array_instance Array[Object] */ +var138 = 1; +var139 = NEW_array__NativeArray(var138, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var139)->values[0] = (val*) var_recv; +{ +((void (*)(val*, val*, long))(var137->class->vft[COLOR_array__Array__with_native]))(var137, var139, var138) /* with_native on */; +} +} +{ +var140 = ((val* (*)(val*))(var137->class->vft[COLOR_string__Object__to_s]))(var137) /* to_s on */; +} +{ +string__FlatBuffer__append(var_ss, var140); /* Direct call string#FlatBuffer#append on */ +} +var141 = 0; +var_i = var141; +{ +var142 = model__MSignature__arity(var_msignature); +} +var_143 = var142; +for(;;) { +{ +{ /* Inline kernel#Int#< (var_i,var_143) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var146 = 1; /* easy isa OTHER*/ +if (unlikely(!var146)) { +var_class_name149 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name149); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371); +show_backtrace(1); +} +var150 = var_i < var_143; +var144 = var150; +goto RET_LABEL145; +RET_LABEL145:(void)0; +} +} +if (var144){ +var151 = 1; +{ +{ /* Inline kernel#Int#+ (var_i,var151) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var154 = 1; /* easy isa OTHER*/ +if (unlikely(!var154)) { +var_class_name157 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name157); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var158 = var_i + var151; +var152 = var158; +goto RET_LABEL153; +RET_LABEL153:(void)0; +} +} +{ +var159 = array__Array___91d_93d(var_arguments, var152); +} +var_a = var159; +{ +{ /* Inline model#MSignature#mparameters (var_msignature) on */ +var162 = var_msignature->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_i); +} +{ +{ /* 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_t = var164; +{ +{ /* Inline model#MSignature#vararg_rank (var_msignature) on */ +var169 = var_msignature->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on */ +var167 = var169; +RET_LABEL168:(void)0; +} +} +{ +{ /* Inline kernel#Int#== (var_i,var167) on */ +var173 = var_i == var167; +var171 = var173; +goto RET_LABEL172; +RET_LABEL172:(void)0; +} +var170 = var171; +} +if (var170){ +var174 = 1; +{ +{ /* Inline kernel#Int#+ (var_i,var174) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var177 = 1; /* easy isa OTHER*/ +if (unlikely(!var177)) { +var_class_name180 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name180); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var181 = var_i + var174; +var175 = var181; +goto RET_LABEL176; +RET_LABEL176:(void)0; +} +} +{ +var182 = array__Array___91d_93d(var_arguments, var175); +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var182) on */ +var185 = var182->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var185 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var183 = var185; +RET_LABEL184:(void)0; +} +} +var_t = var183; +} else { +} +if (varonce186) { +var187 = varonce186; +} else { +var188 = ", "; +var189 = 2; +var190 = string__NativeString__to_s_with_length(var188, var189); +var187 = var190; +varonce186 = var187; +} +{ +var191 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on */; +} +var192 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var192 = array_instance Array[Object] */ +var193 = 2; +var194 = NEW_array__NativeArray(var193, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var194)->values[0] = (val*) var187; +((struct instance_array__NativeArray*)var194)->values[1] = (val*) var191; +{ +((void (*)(val*, val*, long))(var192->class->vft[COLOR_array__Array__with_native]))(var192, var194, var193) /* with_native on */; +} +} +{ +var195 = ((val* (*)(val*))(var192->class->vft[COLOR_string__Object__to_s]))(var192) /* to_s on */; +} +{ +string__FlatBuffer__append(var_s, var195); /* Direct call string#FlatBuffer#append on */ +} +{ +var196 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_a, var_t); +} +var_a = var196; +if (varonce197) { +var198 = varonce197; +} else { +var199 = ", "; +var200 = 2; +var201 = string__NativeString__to_s_with_length(var199, var200); +var198 = var201; +varonce197 = var198; +} +var202 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var202 = array_instance Array[Object] */ +var203 = 2; +var204 = NEW_array__NativeArray(var203, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var204)->values[0] = (val*) var198; +((struct instance_array__NativeArray*)var204)->values[1] = (val*) var_a; +{ +((void (*)(val*, val*, long))(var202->class->vft[COLOR_array__Array__with_native]))(var202, var204, var203) /* with_native on */; +} +} +{ +var205 = ((val* (*)(val*))(var202->class->vft[COLOR_string__Object__to_s]))(var202) /* to_s on */; +} +{ +string__FlatBuffer__append(var_ss, var205); /* Direct call string#FlatBuffer#append on */ +} +var206 = 1; +{ +var207 = kernel__Int__successor(var_i, var206); +} +var_i = var207; +} else { +goto BREAK_label; +} +} +BREAK_label: (void)0; +var208 = NULL; +if (var_ret == NULL) { +var209 = 1; /* is null */ +} else { +var209 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_ret,var208) on */ +var_other = var208; +{ +{ /* Inline kernel#Object#is_same_instance (var_ret,var_other) on */ +var214 = var_ret == var_other; +var212 = var214; +goto RET_LABEL213; +RET_LABEL213:(void)0; +} +} +var210 = var212; +goto RET_LABEL211; +RET_LABEL211:(void)0; +} +var209 = var210; +} +if (var209){ +if (varonce215) { +var216 = varonce215; +} else { +var217 = "void"; +var218 = 4; +var219 = string__NativeString__to_s_with_length(var217, var218); +var216 = var219; +varonce215 = var216; +} +var_r = var216; +} else { +{ +var220 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on */; +} +var_r = var220; +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var_const_color); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +if (varonce221) { +var222 = varonce221; +} else { +var223 = "(("; +var224 = 2; +var225 = string__NativeString__to_s_with_length(var223, var224); +var222 = var225; +varonce221 = var222; +} +if (varonce226) { +var227 = varonce226; +} else { +var228 = " (*)("; +var229 = 5; +var230 = string__NativeString__to_s_with_length(var228, var229); +var227 = var230; +varonce226 = var227; +} +if (varonce231) { +var232 = varonce231; +} else { +var233 = "))("; +var234 = 3; +var235 = string__NativeString__to_s_with_length(var233, var234); +var232 = var235; +varonce231 = var232; +} +{ +var236 = abstract_collection__SequenceRead__first(var_arguments); +} +if (varonce237) { +var238 = varonce237; +} else { +var239 = "->class->vft["; +var240 = 13; +var241 = string__NativeString__to_s_with_length(var239, var240); +var238 = var241; +varonce237 = var238; +} +if (varonce242) { +var243 = varonce242; +} else { +var244 = "]))("; +var245 = 4; +var246 = string__NativeString__to_s_with_length(var244, var245); +var243 = var246; +varonce242 = var243; +} +if (varonce247) { +var248 = varonce247; +} else { +var249 = ") /* "; +var250 = 5; +var251 = string__NativeString__to_s_with_length(var249, var250); +var248 = var251; +varonce247 = var248; +} +if (varonce252) { +var253 = varonce252; +} else { +var254 = " on "; +var255 = 4; +var256 = string__NativeString__to_s_with_length(var254, var255); +var253 = var256; +varonce252 = var253; +} +{ +var257 = abstract_collection__SequenceRead__first(var_arguments); +} +{ +var258 = abstract_compiler__RuntimeVariable__inspect(var257); +} +if (varonce259) { +var260 = varonce259; +} else { +var261 = "*/"; +var262 = 2; +var263 = string__NativeString__to_s_with_length(var261, var262); +var260 = var263; +varonce259 = var260; +} +var264 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var264 = array_instance Array[Object] */ +var265 = 15; +var266 = NEW_array__NativeArray(var265, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var266)->values[0] = (val*) var222; +((struct instance_array__NativeArray*)var266)->values[1] = (val*) var_r; +((struct instance_array__NativeArray*)var266)->values[2] = (val*) var227; +((struct instance_array__NativeArray*)var266)->values[3] = (val*) var_s; +((struct instance_array__NativeArray*)var266)->values[4] = (val*) var232; +((struct instance_array__NativeArray*)var266)->values[5] = (val*) var236; +((struct instance_array__NativeArray*)var266)->values[6] = (val*) var238; +((struct instance_array__NativeArray*)var266)->values[7] = (val*) var_const_color; +((struct instance_array__NativeArray*)var266)->values[8] = (val*) var243; +((struct instance_array__NativeArray*)var266)->values[9] = (val*) var_ss; +((struct instance_array__NativeArray*)var266)->values[10] = (val*) var248; +((struct instance_array__NativeArray*)var266)->values[11] = (val*) var_mmethod; +((struct instance_array__NativeArray*)var266)->values[12] = (val*) var253; +((struct instance_array__NativeArray*)var266)->values[13] = (val*) var258; +((struct instance_array__NativeArray*)var266)->values[14] = (val*) var260; +{ +((void (*)(val*, val*, long))(var264->class->vft[COLOR_array__Array__with_native]))(var264, var266, var265) /* with_native on */; +} +} +{ +var267 = ((val* (*)(val*))(var264->class->vft[COLOR_string__Object__to_s]))(var264) /* to_s on */; +} +var_call = var267; +var268 = NULL; +if (var_res == NULL) { +var269 = 0; /* is null */ +} else { +var269 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var268) on */ +var_other272 = var268; +{ +var274 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other272) /* == on */; +var273 = var274; +} +var275 = !var273; +var270 = var275; +goto RET_LABEL271; +RET_LABEL271:(void)0; +} +var269 = var270; +} +if (var269){ +if (varonce276) { +var277 = varonce276; +} else { +var278 = " = "; +var279 = 3; +var280 = string__NativeString__to_s_with_length(var278, var279); +var277 = var280; +varonce276 = var277; +} +if (varonce281) { +var282 = varonce281; +} else { +var283 = ";"; +var284 = 1; +var285 = string__NativeString__to_s_with_length(var283, var284); +var282 = var285; +varonce281 = var282; +} +var286 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var286 = array_instance Array[Object] */ +var287 = 4; +var288 = NEW_array__NativeArray(var287, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var288)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var288)->values[1] = (val*) var277; +((struct instance_array__NativeArray*)var288)->values[2] = (val*) var_call; +((struct instance_array__NativeArray*)var288)->values[3] = (val*) var282; +{ +((void (*)(val*, val*, long))(var286->class->vft[COLOR_array__Array__with_native]))(var286, var288, var287) /* with_native on */; +} +} +{ +var289 = ((val* (*)(val*))(var286->class->vft[COLOR_string__Object__to_s]))(var286) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var289); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +if (varonce290) { +var291 = varonce290; +} else { +var292 = ";"; +var293 = 1; +var294 = string__NativeString__to_s_with_length(var292, var293); +var291 = var294; +varonce290 = var291; +} +var295 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var295 = array_instance Array[Object] */ +var296 = 2; +var297 = NEW_array__NativeArray(var296, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var297)->values[0] = (val*) var_call; +((struct instance_array__NativeArray*)var297)->values[1] = (val*) var291; +{ +((void (*)(val*, val*, long))(var295->class->vft[COLOR_array__Array__with_native]))(var295, var297, var296) /* with_native on */; +} +} +{ +var298 = ((val* (*)(val*))(var295->class->vft[COLOR_string__Object__to_s]))(var295) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var298); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +var299 = NULL; +if (var_res0 == NULL) { +var300 = 0; /* is null */ +} else { +var300 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res0,var299) on */ +var_other272 = var299; +{ +var304 = ((short int (*)(val*, val*))(var_res0->class->vft[COLOR_kernel__Object___61d_61d]))(var_res0, var_other272) /* == on */; +var303 = var304; +} +var305 = !var303; +var301 = var305; +goto RET_LABEL302; +RET_LABEL302:(void)0; +} +var300 = var301; +} +if (var300){ +var306 = NULL; +if (var_res == NULL) { +var307 = 0; /* is null */ +} else { +var307 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_res,var306) on */ +var_other272 = var306; +{ +var311 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other272) /* == on */; +var310 = var311; +} +var312 = !var310; +var308 = var312; +goto RET_LABEL309; +RET_LABEL309:(void)0; +} +var307 = var308; +} +if (unlikely(!var307)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1210); +show_backtrace(1); +} +{ +abstract_compiler__AbstractCompilerVisitor__assign(self, var_res0, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on */ +} +var_res = var_res0; +} else { +} +if (varonce313) { +var314 = varonce313; +} else { +var315 = "}"; +var316 = 1; +var317 = string__NativeString__to_s_with_length(var315, var316); +var314 = var317; +varonce313 = var314; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var314); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#table_send for (self: Object, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable RuntimeVariable */; +val* var1 /* : nullable RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__table_send(self, p0, p1, p2); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#call for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable RuntimeVariable */; +val* var_mmethoddef /* var mmethoddef: MMethodDef */; +val* var_recvtype /* var recvtype: MClassType */; +val* var_arguments /* var arguments: Array[RuntimeVariable] */; +long var1 /* : Int */; +long var3 /* : Int */; +val* var4 /* : nullable MSignature */; +val* var6 /* : nullable MSignature */; +long var7 /* : Int */; +long var8 /* : Int */; +long var9 /* : Int */; +short int var11 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var12 /* : Int */; +short int var13 /* : Bool */; +short int var14 /* : Bool */; +short int var16 /* : Bool */; +static val* varonce; +val* var17 /* : String */; +char* var18 /* : NativeString */; +long var19 /* : Int */; +val* var20 /* : FlatString */; +static val* varonce21; +val* var22 /* : String */; +char* var23 /* : NativeString */; +long var24 /* : Int */; +val* var25 /* : FlatString */; +long var26 /* : Int */; +long var28 /* : Int */; +static val* varonce29; +val* var30 /* : String */; +char* var31 /* : NativeString */; +long var32 /* : Int */; +val* var33 /* : FlatString */; +val* var34 /* : Array[Object] */; +long var35 /* : Int */; +val* var36 /* : NativeArray[Object] */; +val* var37 /* : Object */; +val* var38 /* : String */; +val* var39 /* : nullable MSignature */; +val* var41 /* : nullable MSignature */; +val* var42 /* : nullable MType */; +val* var44 /* : nullable MType */; +val* var_ret /* var ret: nullable MType */; +val* var45 /* : null */; +short int var46 /* : Bool */; +short int var47 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var49 /* : Bool */; +short int var51 /* : Bool */; +val* var52 /* : null */; +val* var_res /* var res: nullable RuntimeVariable */; +val* var53 /* : MClassDef */; +val* var55 /* : MClassDef */; +val* var56 /* : MClassType */; +val* var58 /* : MClassType */; +val* var59 /* : MClassDef */; +val* var61 /* : MClassDef */; +val* var62 /* : MClassType */; +val* var64 /* : MClassType */; +val* var65 /* : MClassDef */; +val* var67 /* : MClassDef */; +val* var68 /* : MModule */; +val* var70 /* : MModule */; +short int var71 /* : Bool */; +val* var72 /* : MType */; +val* var73 /* : RuntimeVariable */; +short int var74 /* : Bool */; +short int var75 /* : Bool */; +short int var76 /* : Bool */; +short int var78 /* : Bool */; +short int var_ /* var : Bool */; +val* var79 /* : AbstractCompiler */; +val* var81 /* : AbstractCompiler */; +val* var82 /* : ModelBuilder */; +val* var84 /* : ModelBuilder */; +val* var85 /* : ToolContext */; +val* var87 /* : ToolContext */; +val* var88 /* : OptionBool */; +val* var90 /* : OptionBool */; +val* var91 /* : nullable Object */; +val* var93 /* : nullable Object */; +short int var94 /* : Bool */; +short int var95 /* : Bool */; +short int var_96 /* var : Bool */; +short int var97 /* : Bool */; +val* var98 /* : AbstractCompiler */; +val* var100 /* : AbstractCompiler */; +val* var101 /* : ModelBuilder */; +val* var103 /* : ModelBuilder */; +val* var104 /* : ToolContext */; +val* var106 /* : ToolContext */; +val* var107 /* : OptionBool */; +val* var109 /* : OptionBool */; +val* var110 /* : nullable Object */; +val* var112 /* : nullable Object */; +short int var113 /* : Bool */; +short int var_114 /* var : Bool */; +short int var115 /* : Bool */; +val* var116 /* : AbstractCompiler */; +val* var118 /* : AbstractCompiler */; +val* var119 /* : ModelBuilder */; +val* var121 /* : ModelBuilder */; +val* var_122 /* var : ModelBuilder */; +long var123 /* : Int */; +long var125 /* : Int */; +long var126 /* : Int */; +long var127 /* : Int */; +short int var129 /* : Bool */; +int cltype130; +int idtype131; +const char* var_class_name132; +long var133 /* : Int */; +val* var135 /* : AbstractCompiler */; +val* var137 /* : AbstractCompiler */; +val* var138 /* : ModelBuilder */; +val* var140 /* : ModelBuilder */; +val* var141 /* : ToolContext */; +val* var143 /* : ToolContext */; +val* var144 /* : OptionBool */; +val* var146 /* : OptionBool */; +val* var147 /* : nullable Object */; +val* var149 /* : nullable Object */; +short int var150 /* : Bool */; +static val* varonce151; +val* var152 /* : String */; +char* var153 /* : NativeString */; +long var154 /* : Int */; +val* var155 /* : FlatString */; +val* var156 /* : Frame */; +val* var_frame /* var frame: Frame */; +static val* varonce157; +val* var158 /* : String */; +char* var159 /* : NativeString */; +long var160 /* : Int */; +val* var161 /* : FlatString */; +val* var162 /* : String */; +val* var165 /* : nullable Frame */; +val* var167 /* : nullable Frame */; +val* var_old_frame /* var old_frame: nullable Frame */; +static val* varonce169; +val* var170 /* : String */; +char* var171 /* : NativeString */; +long var172 /* : Int */; +val* var173 /* : FlatString */; +static val* varonce174; +val* var175 /* : String */; +char* var176 /* : NativeString */; +long var177 /* : Int */; +val* var178 /* : FlatString */; +static val* varonce179; +val* var180 /* : String */; +char* var181 /* : NativeString */; +long var182 /* : Int */; +val* var183 /* : FlatString */; +val* var184 /* : String */; +static val* varonce185; +val* var186 /* : String */; +char* var187 /* : NativeString */; +long var188 /* : Int */; +val* var189 /* : FlatString */; +val* var190 /* : nullable Object */; +val* var191 /* : String */; +static val* varonce192; +val* var193 /* : String */; +char* var194 /* : NativeString */; +long var195 /* : Int */; +val* var196 /* : FlatString */; +val* var197 /* : Array[Object] */; +long var198 /* : Int */; +val* var199 /* : NativeArray[Object] */; +val* var200 /* : String */; +val* var201 /* : nullable RuntimeVariable */; +val* var202 /* : nullable String */; +val* var204 /* : nullable String */; +static val* varonce205; +val* var206 /* : String */; +char* var207 /* : NativeString */; +long var208 /* : Int */; +val* var209 /* : FlatString */; +val* var210 /* : Array[Object] */; +long var211 /* : Int */; +val* var212 /* : NativeArray[Object] */; +val* var213 /* : String */; +static val* varonce214; +val* var215 /* : String */; +char* var216 /* : NativeString */; +long var217 /* : Int */; +val* var218 /* : FlatString */; +val* var220 /* : AbstractCompiler */; +val* var222 /* : AbstractCompiler */; +val* var223 /* : ModelBuilder */; +val* var225 /* : ModelBuilder */; +val* var_226 /* var : ModelBuilder */; +long var227 /* : Int */; +long var229 /* : Int */; +long var230 /* : Int */; +long var231 /* : Int */; +short int var233 /* : Bool */; +int cltype234; +int idtype235; +const char* var_class_name236; +long var237 /* : Int */; +val* var239 /* : AbstractCompiler */; +val* var241 /* : AbstractCompiler */; +val* var242 /* : ModelBuilder */; +val* var244 /* : ModelBuilder */; +val* var245 /* : ToolContext */; +val* var247 /* : ToolContext */; +val* var248 /* : OptionBool */; +val* var250 /* : OptionBool */; +val* var251 /* : nullable Object */; +val* var253 /* : nullable Object */; +short int var254 /* : Bool */; +static val* varonce255; +val* var256 /* : String */; +char* var257 /* : NativeString */; +long var258 /* : Int */; +val* var259 /* : FlatString */; +val* var260 /* : String */; +val* var261 /* : null */; +short int var262 /* : Bool */; +short int var263 /* : Bool */; +short int var265 /* : Bool */; +short int var267 /* : Bool */; +val* var268 /* : String */; +static val* varonce269; +val* var270 /* : String */; +char* var271 /* : NativeString */; +long var272 /* : Int */; +val* var273 /* : FlatString */; +static val* varonce274; +val* var275 /* : String */; +char* var276 /* : NativeString */; +long var277 /* : Int */; +val* var278 /* : FlatString */; +val* var279 /* : String */; +static val* varonce280; +val* var281 /* : String */; +char* var282 /* : NativeString */; +long var283 /* : Int */; +val* var284 /* : FlatString */; +static val* varonce285; +val* var286 /* : String */; +char* var287 /* : NativeString */; +long var288 /* : Int */; +val* var289 /* : FlatString */; +val* var290 /* : nullable Object */; +val* var291 /* : String */; +static val* varonce292; +val* var293 /* : String */; +char* var294 /* : NativeString */; +long var295 /* : Int */; +val* var296 /* : FlatString */; +val* var297 /* : Array[Object] */; +long var298 /* : Int */; +val* var299 /* : NativeArray[Object] */; +val* var300 /* : String */; +val* var301 /* : null */; +static val* varonce302; +val* var303 /* : String */; +char* var304 /* : NativeString */; +long var305 /* : Int */; +val* var306 /* : FlatString */; +val* var307 /* : String */; +static val* varonce308; +val* var309 /* : String */; +char* var310 /* : NativeString */; +long var311 /* : Int */; +val* var312 /* : FlatString */; +static val* varonce313; +val* var314 /* : String */; +char* var315 /* : NativeString */; +long var316 /* : Int */; +val* var317 /* : FlatString */; +val* var318 /* : String */; +static val* varonce319; +val* var320 /* : String */; +char* var321 /* : NativeString */; +long var322 /* : Int */; +val* var323 /* : FlatString */; +val* var324 /* : Array[Object] */; +long var325 /* : Int */; +val* var326 /* : NativeArray[Object] */; +val* var327 /* : String */; +var_mmethoddef = p0; +var_recvtype = p1; +var_arguments = p2; +{ +{ /* Inline array#AbstractArrayRead#length (var_arguments) on */ +var3 = var_arguments->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on */ +var6 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +if (var4 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1222); +show_backtrace(1); +} else { +var7 = model__MSignature__arity(var4); +} +var8 = 1; +{ +{ /* Inline kernel#Int#+ (var7,var8) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var11 = 1; /* easy isa OTHER*/ +if (unlikely(!var11)) { +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", 374); +show_backtrace(1); +} +var12 = var7 + var8; +var9 = var12; +goto RET_LABEL10; +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline kernel#Int#== (var1,var9) on */ +var16 = var1 == var9; +var14 = var16; +goto RET_LABEL15; +RET_LABEL15:(void)0; +} +var13 = var14; +} +if (unlikely(!var13)) { +if (varonce) { +var17 = varonce; +} else { +var18 = "Invalid arity for "; +var19 = 18; +var20 = string__NativeString__to_s_with_length(var18, var19); +var17 = var20; +varonce = var17; +} +if (varonce21) { +var22 = varonce21; +} else { +var23 = ". "; +var24 = 2; +var25 = string__NativeString__to_s_with_length(var23, var24); +var22 = var25; +varonce21 = var22; +} +{ +{ /* Inline array#AbstractArrayRead#length (var_arguments) on */ +var28 = var_arguments->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var26 = var28; +RET_LABEL27:(void)0; +} +} +if (varonce29) { +var30 = varonce29; +} else { +var31 = " arguments given."; +var32 = 17; +var33 = string__NativeString__to_s_with_length(var31, var32); +var30 = var33; +varonce29 = var30; +} +var34 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var34 = array_instance Array[Object] */ +var35 = 5; +var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var36)->values[0] = (val*) var17; +((struct instance_array__NativeArray*)var36)->values[1] = (val*) var_mmethoddef; +((struct instance_array__NativeArray*)var36)->values[2] = (val*) var22; +var37 = BOX_kernel__Int(var26); /* autobox from Int to Object */ +((struct instance_array__NativeArray*)var36)->values[3] = (val*) var37; +((struct instance_array__NativeArray*)var36)->values[4] = (val*) var30; +{ +((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on */; +} +} +{ +var38 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__debug(self, var38); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on */ +} +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1222); +show_backtrace(1); +} +{ +{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on */ +var41 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on */ +var39 = var41; +RET_LABEL40:(void)0; +} +} +if (var39 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1225); +show_backtrace(1); +} else { +{ /* Inline model#MSignature#return_mtype (var39) on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468); +show_backtrace(1); +} +var44 = var39->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on */ +var42 = var44; +RET_LABEL43:(void)0; +} +} +var_ret = var42; +var45 = NULL; +if (var_ret == NULL) { +var46 = 1; /* is null */ +} else { +var46 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_ret,var45) on */ +var_other = var45; +{ +{ /* Inline kernel#Object#is_same_instance (var_ret,var_other) on */ +var51 = var_ret == var_other; +var49 = var51; +goto RET_LABEL50; +RET_LABEL50:(void)0; +} +} +var47 = var49; +goto RET_LABEL48; +RET_LABEL48:(void)0; +} +var46 = var47; +} +if (var46){ +var52 = NULL; +var_res = var52; +} else { +{ +{ /* Inline model#MPropDef#mclassdef (var_mmethoddef) on */ +var55 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var55 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var53 = var55; +RET_LABEL54:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var53) on */ +var58 = var53->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var58 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var56 = var58; +RET_LABEL57:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var_mmethoddef) on */ +var61 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var61 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var59 = var61; +RET_LABEL60:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var59) on */ +var64 = var59->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var64 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var62 = var64; +RET_LABEL63:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var_mmethoddef) on */ +var67 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var67 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var65 = var67; +RET_LABEL66:(void)0; +} +} +{ +{ /* Inline model#MClassDef#mmodule (var65) on */ +var70 = var65->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on */ +if (unlikely(var70 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489); +show_backtrace(1); +} +var68 = var70; +RET_LABEL69:(void)0; +} +} +var71 = 1; +{ +var72 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var56, var62, var68, var71) /* resolve_for on */; +} +var_ret = var72; +{ +var73 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_ret); +} +var_res = var73; +} +{ +{ /* Inline model#MMethodDef#is_intern (var_mmethoddef) on */ +var78 = var_mmethoddef->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on */ +var76 = var78; +RET_LABEL77:(void)0; +} +} +var_ = var76; +if (var76){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var81 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var81 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var79 = var81; +RET_LABEL80:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var79) on */ +var84 = var79->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var84 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var82 = var84; +RET_LABEL83:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var82) on */ +var87 = var82->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var87 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var85 = var87; +RET_LABEL86:(void)0; +} +} +{ +{ /* Inline separate_compiler#ToolContext#opt_no_inline_intern (var85) on */ +var90 = var85->attrs[COLOR_separate_compiler__ToolContext___opt_no_inline_intern].val; /* _opt_no_inline_intern on */ +if (unlikely(var90 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_inline_intern"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 26); +show_backtrace(1); +} +var88 = var90; +RET_LABEL89:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var88) on */ +var93 = var88->attrs[COLOR_opts__Option___value].val; /* _value on */ +var91 = var93; +RET_LABEL92:(void)0; +} +} +var94 = ((struct instance_kernel__Bool*)var91)->value; /* autounbox from nullable Object to Bool */; +var95 = !var94; +var75 = var95; +} else { +var75 = var_; +} +var_96 = var75; +if (var75){ +var74 = var_96; +} else { +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var100 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var100 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var98 = var100; +RET_LABEL99:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var98) on */ +var103 = var98->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var103 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var101 = var103; +RET_LABEL102:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var101) on */ +var106 = var101->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var106 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var104 = var106; +RET_LABEL105:(void)0; +} +} +{ +{ /* Inline separate_compiler#ToolContext#opt_inline_some_methods (var104) on */ +var109 = var104->attrs[COLOR_separate_compiler__ToolContext___opt_inline_some_methods].val; /* _opt_inline_some_methods on */ +if (unlikely(var109 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_some_methods"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 34); +show_backtrace(1); +} +var107 = var109; +RET_LABEL108:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var107) on */ +var112 = var107->attrs[COLOR_opts__Option___value].val; /* _value on */ +var110 = var112; +RET_LABEL111:(void)0; +} +} +var113 = ((struct instance_kernel__Bool*)var110)->value; /* autounbox from nullable Object to Bool */; +var_114 = var113; +if (var113){ +{ +var115 = abstract_compiler__MMethodDef__can_inline(var_mmethoddef, self); +} +var97 = var115; +} else { +var97 = var_114; +} +var74 = var97; +} +if (var74){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var118 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var118 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var116 = var118; +RET_LABEL117:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var116) on */ +var121 = var116->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var121 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var119 = var121; +RET_LABEL120:(void)0; +} +} +var_122 = var119; +{ +{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var_122) on */ +var125 = var_122->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on */ +var123 = var125; +RET_LABEL124:(void)0; +} +} +var126 = 1; +{ +{ /* Inline kernel#Int#+ (var123,var126) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var129 = 1; /* easy isa OTHER*/ +if (unlikely(!var129)) { +var_class_name132 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name132); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var133 = var123 + var126; +var127 = var133; +goto RET_LABEL128; +RET_LABEL128:(void)0; +} +} +{ +{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline= (var_122,var127) on */ +var_122->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_inline].l = var127; /* _nb_invok_by_inline on */ +RET_LABEL134:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var137 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var137 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var135 = var137; +RET_LABEL136:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var135) on */ +var140 = var135->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var140 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var138 = var140; +RET_LABEL139:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var138) on */ +var143 = var138->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var143 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var141 = var143; +RET_LABEL142:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var141) on */ +var146 = var141->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on */ +if (unlikely(var146 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 63); +show_backtrace(1); +} +var144 = var146; +RET_LABEL145:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var144) on */ +var149 = var144->attrs[COLOR_opts__Option___value].val; /* _value on */ +var147 = var149; +RET_LABEL148:(void)0; +} +} +var150 = ((struct instance_kernel__Bool*)var147)->value; /* autounbox from nullable Object to Bool */; +if (var150){ +if (varonce151) { +var152 = varonce151; +} else { +var153 = "count_invoke_by_inline++;"; +var154 = 25; +var155 = string__NativeString__to_s_with_length(var153, var154); +var152 = var155; +varonce151 = var152; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var152); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +} +var156 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame); +{ +((void (*)(val*, val*))(var156->class->vft[COLOR_abstract_compiler__Frame__visitor_61d]))(var156, self) /* visitor= on */; +} +{ +((void (*)(val*, val*))(var156->class->vft[COLOR_abstract_compiler__Frame__mpropdef_61d]))(var156, var_mmethoddef) /* mpropdef= on */; +} +{ +((void (*)(val*, val*))(var156->class->vft[COLOR_abstract_compiler__Frame__receiver_61d]))(var156, var_recvtype) /* receiver= on */; +} +{ +((void (*)(val*, val*))(var156->class->vft[COLOR_abstract_compiler__Frame__arguments_61d]))(var156, var_arguments) /* arguments= on */; +} +{ +((void (*)(val*))(var156->class->vft[COLOR_kernel__Object__init]))(var156) /* init on */; +} +var_frame = var156; +if (varonce157) { +var158 = varonce157; +} else { +var159 = "RET_LABEL"; +var160 = 9; +var161 = string__NativeString__to_s_with_length(var159, var160); +var158 = var161; +varonce157 = var158; +} +{ +var162 = abstract_compiler__AbstractCompilerVisitor__get_name(self, var158); +} +{ +{ /* Inline abstract_compiler#Frame#returnlabel= (var_frame,var162) on */ +var_frame->attrs[COLOR_abstract_compiler__Frame___returnlabel].val = var162; /* _returnlabel on */ +RET_LABEL163:(void)0; +} +} +{ +{ /* Inline abstract_compiler#Frame#returnvar= (var_frame,var_res) on */ +var_frame->attrs[COLOR_abstract_compiler__Frame___returnvar].val = var_res; /* _returnvar on */ +RET_LABEL164:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on */ +var167 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on */ +var165 = var167; +RET_LABEL166:(void)0; +} +} +var_old_frame = var165; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_frame) on */ +self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on */ +RET_LABEL168:(void)0; +} +} +if (varonce169) { +var170 = varonce169; +} else { +var171 = "{ /* Inline "; +var172 = 12; +var173 = string__NativeString__to_s_with_length(var171, var172); +var170 = var173; +varonce169 = var170; +} +if (varonce174) { +var175 = varonce174; +} else { +var176 = " ("; +var177 = 2; +var178 = string__NativeString__to_s_with_length(var176, var177); +var175 = var178; +varonce174 = var175; +} +if (varonce179) { +var180 = varonce179; +} else { +var181 = ","; +var182 = 1; +var183 = string__NativeString__to_s_with_length(var181, var182); +var180 = var183; +varonce179 = var180; +} +{ +var184 = string__Collection__join(var_arguments, var180); +} +if (varonce185) { +var186 = varonce185; +} else { +var187 = ") on "; +var188 = 5; +var189 = string__NativeString__to_s_with_length(var187, var188); +var186 = var189; +varonce185 = var186; +} +{ +var190 = abstract_collection__SequenceRead__first(var_arguments); +} +{ +var191 = abstract_compiler__RuntimeVariable__inspect(var190); +} +if (varonce192) { +var193 = varonce192; +} else { +var194 = " */"; +var195 = 3; +var196 = string__NativeString__to_s_with_length(var194, var195); +var193 = var196; +varonce192 = var193; +} +var197 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var197 = array_instance Array[Object] */ +var198 = 7; +var199 = NEW_array__NativeArray(var198, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var199)->values[0] = (val*) var170; +((struct instance_array__NativeArray*)var199)->values[1] = (val*) var_mmethoddef; +((struct instance_array__NativeArray*)var199)->values[2] = (val*) var175; +((struct instance_array__NativeArray*)var199)->values[3] = (val*) var184; +((struct instance_array__NativeArray*)var199)->values[4] = (val*) var186; +((struct instance_array__NativeArray*)var199)->values[5] = (val*) var191; +((struct instance_array__NativeArray*)var199)->values[6] = (val*) var193; +{ +((void (*)(val*, val*, long))(var197->class->vft[COLOR_array__Array__with_native]))(var197, var199, var198) /* with_native on */; +} +} +{ +var200 = ((val* (*)(val*))(var197->class->vft[COLOR_string__Object__to_s]))(var197) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var200); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +{ +var201 = abstract_compiler__MMethodDef__compile_inside_to_c(var_mmethoddef, self, var_arguments); +} +{ +{ /* Inline abstract_compiler#Frame#returnlabel (var_frame) on */ +var204 = var_frame->attrs[COLOR_abstract_compiler__Frame___returnlabel].val; /* _returnlabel on */ +var202 = var204; +RET_LABEL203:(void)0; +} +} +if (unlikely(var202 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1244); +show_backtrace(1); +} +if (varonce205) { +var206 = varonce205; +} else { +var207 = ":(void)0;"; +var208 = 9; +var209 = string__NativeString__to_s_with_length(var207, var208); +var206 = var209; +varonce205 = var206; +} +var210 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var210 = array_instance Array[Object] */ +var211 = 2; +var212 = NEW_array__NativeArray(var211, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var212)->values[0] = (val*) var202; +((struct instance_array__NativeArray*)var212)->values[1] = (val*) var206; +{ +((void (*)(val*, val*, long))(var210->class->vft[COLOR_array__Array__with_native]))(var210, var212, var211) /* with_native on */; +} +} +{ +var213 = ((val* (*)(val*))(var210->class->vft[COLOR_string__Object__to_s]))(var210) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var213); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce214) { +var215 = varonce214; +} else { +var216 = "}"; +var217 = 1; +var218 = string__NativeString__to_s_with_length(var216, var217); +var215 = var218; +varonce214 = var215; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var215); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_old_frame) on */ +self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_old_frame; /* _frame on */ +RET_LABEL219:(void)0; +} +} +var = var_res; +goto RET_LABEL; +} else { +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var222 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var222 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var220 = var222; +RET_LABEL221:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var220) on */ +var225 = var220->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var225 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var223 = var225; +RET_LABEL224:(void)0; +} +} +var_226 = var223; +{ +{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var_226) on */ +var229 = var_226->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on */ +var227 = var229; +RET_LABEL228:(void)0; +} +} +var230 = 1; +{ +{ /* Inline kernel#Int#+ (var227,var230) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var233 = 1; /* easy isa OTHER*/ +if (unlikely(!var233)) { +var_class_name236 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name236); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var237 = var227 + var230; +var231 = var237; +goto RET_LABEL232; +RET_LABEL232:(void)0; +} +} +{ +{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct= (var_226,var231) on */ +var_226->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_direct].l = var231; /* _nb_invok_by_direct on */ +RET_LABEL238:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var241 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var241 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var239 = var241; +RET_LABEL240:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var239) on */ +var244 = var239->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var244 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var242 = var244; +RET_LABEL243:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var242) on */ +var247 = var242->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var247 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var245 = var247; +RET_LABEL246:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var245) on */ +var250 = var245->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on */ +if (unlikely(var250 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 63); +show_backtrace(1); +} +var248 = var250; +RET_LABEL249:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var248) on */ +var253 = var248->attrs[COLOR_opts__Option___value].val; /* _value on */ +var251 = var253; +RET_LABEL252:(void)0; +} +} +var254 = ((struct instance_kernel__Bool*)var251)->value; /* autounbox from nullable Object to Bool */; +if (var254){ +if (varonce255) { +var256 = varonce255; +} else { +var257 = "count_invoke_by_direct++;"; +var258 = 25; +var259 = string__NativeString__to_s_with_length(var257, var258); +var256 = var259; +varonce255 = var256; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var256); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +} +{ +separate_compiler__SeparateCompilerVisitor__adapt_signature(self, var_mmethoddef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on */ +} +{ +var260 = abstract_compiler__MPropDef__c_name(var_mmethoddef); +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var260); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +var261 = NULL; +if (var_res == NULL) { +var262 = 1; /* is null */ +} else { +var262 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_res,var261) on */ +var_other = var261; +{ +{ /* Inline kernel#Object#is_same_instance (var_res,var_other) on */ +var267 = var_res == var_other; +var265 = var267; +goto RET_LABEL266; +RET_LABEL266:(void)0; +} +} +var263 = var265; +goto RET_LABEL264; +RET_LABEL264:(void)0; +} +var262 = var263; +} +if (var262){ +{ +var268 = abstract_compiler__MPropDef__c_name(var_mmethoddef); +} +if (varonce269) { +var270 = varonce269; +} else { +var271 = "("; +var272 = 1; +var273 = string__NativeString__to_s_with_length(var271, var272); +var270 = var273; +varonce269 = var270; +} +if (varonce274) { +var275 = varonce274; +} else { +var276 = ", "; +var277 = 2; +var278 = string__NativeString__to_s_with_length(var276, var277); +var275 = var278; +varonce274 = var275; +} +{ +var279 = string__Collection__join(var_arguments, var275); +} +if (varonce280) { +var281 = varonce280; +} else { +var282 = "); /* Direct call "; +var283 = 18; +var284 = string__NativeString__to_s_with_length(var282, var283); +var281 = var284; +varonce280 = var281; +} +if (varonce285) { +var286 = varonce285; +} else { +var287 = " on "; +var288 = 4; +var289 = string__NativeString__to_s_with_length(var287, var288); +var286 = var289; +varonce285 = var286; +} +{ +var290 = abstract_collection__SequenceRead__first(var_arguments); +} +{ +var291 = abstract_compiler__RuntimeVariable__inspect(var290); +} +if (varonce292) { +var293 = varonce292; +} else { +var294 = "*/"; +var295 = 2; +var296 = string__NativeString__to_s_with_length(var294, var295); +var293 = var296; +varonce292 = var293; +} +var297 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var297 = array_instance Array[Object] */ +var298 = 8; +var299 = NEW_array__NativeArray(var298, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var299)->values[0] = (val*) var268; +((struct instance_array__NativeArray*)var299)->values[1] = (val*) var270; +((struct instance_array__NativeArray*)var299)->values[2] = (val*) var279; +((struct instance_array__NativeArray*)var299)->values[3] = (val*) var281; +((struct instance_array__NativeArray*)var299)->values[4] = (val*) var_mmethoddef; +((struct instance_array__NativeArray*)var299)->values[5] = (val*) var286; +((struct instance_array__NativeArray*)var299)->values[6] = (val*) var291; +((struct instance_array__NativeArray*)var299)->values[7] = (val*) var293; +{ +((void (*)(val*, val*, long))(var297->class->vft[COLOR_array__Array__with_native]))(var297, var299, var298) /* with_native on */; +} +} +{ +var300 = ((val* (*)(val*))(var297->class->vft[COLOR_string__Object__to_s]))(var297) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var300); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +var301 = NULL; +var = var301; +goto RET_LABEL; +} else { +if (varonce302) { +var303 = varonce302; +} else { +var304 = " = "; +var305 = 3; +var306 = string__NativeString__to_s_with_length(var304, var305); +var303 = var306; +varonce302 = var303; +} +{ +var307 = abstract_compiler__MPropDef__c_name(var_mmethoddef); +} +if (varonce308) { +var309 = varonce308; +} else { +var310 = "("; +var311 = 1; +var312 = string__NativeString__to_s_with_length(var310, var311); +var309 = var312; +varonce308 = var309; +} +if (varonce313) { +var314 = varonce313; +} else { +var315 = ", "; +var316 = 2; +var317 = string__NativeString__to_s_with_length(var315, var316); +var314 = var317; +varonce313 = var314; +} +{ +var318 = string__Collection__join(var_arguments, var314); +} +if (varonce319) { +var320 = varonce319; +} else { +var321 = ");"; +var322 = 2; +var323 = string__NativeString__to_s_with_length(var321, var322); +var320 = var323; +varonce319 = var320; +} +var324 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var324 = array_instance Array[Object] */ +var325 = 6; +var326 = NEW_array__NativeArray(var325, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var326)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var326)->values[1] = (val*) var303; +((struct instance_array__NativeArray*)var326)->values[2] = (val*) var307; +((struct instance_array__NativeArray*)var326)->values[3] = (val*) var309; +((struct instance_array__NativeArray*)var326)->values[4] = (val*) var318; +((struct instance_array__NativeArray*)var326)->values[5] = (val*) var320; +{ +((void (*)(val*, val*, long))(var324->class->vft[COLOR_array__Array__with_native]))(var324, var326, var325) /* with_native on */; +} +} +{ +var327 = ((val* (*)(val*))(var324->class->vft[COLOR_string__Object__to_s]))(var324) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var327); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#call for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable RuntimeVariable */; +val* var1 /* : nullable RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__call(self, p0, p1, p2); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#supercall for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable RuntimeVariable */; +val* var_m /* var m: MMethodDef */; +val* var_recvtype /* var recvtype: MClassType */; +val* var_arguments /* var arguments: Array[RuntimeVariable] */; +val* var1 /* : nullable Object */; +val* var2 /* : MType */; +val* var4 /* : MType */; +val* var5 /* : String */; +static val* varonce; +val* var6 /* : String */; +char* var7 /* : NativeString */; +long var8 /* : Int */; +val* var9 /* : FlatString */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var13 /* : Bool */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var16 /* : AbstractCompiler */; +val* var18 /* : AbstractCompiler */; +val* var19 /* : MModule */; +val* var21 /* : MModule */; +val* var_main /* var main: MModule */; +val* var22 /* : AbstractCompiler */; +val* var24 /* : AbstractCompiler */; +val* var25 /* : AbstractCompiler */; +val* var27 /* : AbstractCompiler */; +val* var28 /* : MModule */; +val* var30 /* : MModule */; +val* var32 /* : nullable RuntimeVariable */; +val* var_res /* var res: nullable RuntimeVariable */; +val* var33 /* : AbstractCompiler */; +val* var35 /* : AbstractCompiler */; +val* var37 /* : MProperty */; +val* var39 /* : MProperty */; +val* var40 /* : String */; +val* var41 /* : nullable RuntimeVariable */; +var_m = p0; +var_recvtype = p1; +var_arguments = p2; +{ +var1 = abstract_collection__SequenceRead__first(var_arguments); +} +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype (var1) on */ +var4 = var1->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637); +show_backtrace(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +var5 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var2) /* ctype on */; +} +if (varonce) { +var6 = varonce; +} else { +var7 = "val*"; +var8 = 4; +var9 = string__NativeString__to_s_with_length(var7, var8); +var6 = var9; +varonce = var6; +} +{ +{ /* Inline kernel#Object#!= (var5,var6) on */ +var_other = var6; +{ +var14 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_other) /* == on */; +var13 = var14; +} +var15 = !var13; +var11 = var15; +goto RET_LABEL12; +RET_LABEL12:(void)0; +} +var10 = var11; +} +if (var10){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var18 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var16) on */ +var21 = var16->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463); +show_backtrace(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} +var_main = var19; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var24 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var22 = var24; +RET_LABEL23:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var27 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#realmainmodule (var25) on */ +var30 = var25->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 467); +show_backtrace(1); +} +var28 = var30; +RET_LABEL29:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var22,var28) on */ +var22->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var28; /* _mainmodule on */ +RET_LABEL31:(void)0; +} +} +{ +var32 = abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send(self, var_m, var_recvtype, var_arguments); +} +var_res = var32; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var35 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var35 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var33 = var35; +RET_LABEL34:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var33,var_main) on */ +var33->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var_main; /* _mainmodule on */ +RET_LABEL36:(void)0; +} +} +var = var_res; +goto RET_LABEL; +} else { +} +{ +{ /* Inline model#MPropDef#mproperty (var_m) on */ +var39 = var_m->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var39 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898); +show_backtrace(1); +} +var37 = var39; +RET_LABEL38:(void)0; +} +} +{ +var40 = separate_compiler__MPropDef__const_color(var_m); +} +{ +var41 = separate_compiler__SeparateCompilerVisitor__table_send(self, var37, var_arguments, var40); +} +var = var41; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#supercall for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) { +val* var /* : nullable RuntimeVariable */; +val* var1 /* : nullable RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__supercall(self, p0, p1, p2); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: SeparateCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) { +val* var /* : RuntimeVariable */; +val* var_mpropdef /* var mpropdef: MPropDef */; +val* var_recv /* var recv: RuntimeVariable */; +val* var_varargs /* var varargs: Array[RuntimeVariable] */; +val* var_elttype /* var elttype: MType */; +val* var1 /* : nullable Frame */; +val* var3 /* : nullable Frame */; +val* var_old_frame /* var old_frame: nullable Frame */; +val* var4 /* : Frame */; +val* var5 /* : MClassDef */; +val* var7 /* : MClassDef */; +val* var8 /* : MClassType */; +val* var10 /* : MClassType */; +val* var11 /* : Array[RuntimeVariable] */; +long var12 /* : Int */; +val* var_ /* var : Array[RuntimeVariable] */; +val* var_frame /* var frame: Frame */; +val* var14 /* : RuntimeVariable */; +val* var_res /* var res: RuntimeVariable */; +var_mpropdef = p0; +var_recv = p1; +var_varargs = p2; +var_elttype = p3; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on */ +var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on */ +var1 = var3; +RET_LABEL2:(void)0; +} +} +var_old_frame = var1; +var4 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame); +{ +{ /* Inline model#MPropDef#mclassdef (var_mpropdef) on */ +var7 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var5) on */ +var10 = var5->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var8 = var10; +RET_LABEL9:(void)0; +} +} +var11 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable); +var12 = 1; +{ +array__Array__with_capacity(var11, var12); /* Direct call array#Array#with_capacity on */ +} +var_ = var11; +{ +array__AbstractArray__push(var_, var_recv); /* Direct call array#AbstractArray#push on */ +} +{ +((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Frame__visitor_61d]))(var4, self) /* visitor= on */; +} +{ +((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Frame__mpropdef_61d]))(var4, var_mpropdef) /* mpropdef= on */; +} +{ +((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Frame__receiver_61d]))(var4, var8) /* receiver= on */; +} +{ +((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Frame__arguments_61d]))(var4, var_) /* arguments= on */; +} +{ +((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on */; +} +var_frame = var4; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_frame) on */ +self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on */ +RET_LABEL13:(void)0; +} +} +{ +var14 = separate_compiler__SeparateCompilerVisitor__array_instance(self, var_varargs, var_elttype); +} +var_res = var14; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_old_frame) on */ +self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_old_frame; /* _frame on */ +RET_LABEL15:(void)0; +} +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: Object, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) { +val* var /* : RuntimeVariable */; +val* var1 /* : RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__vararg_instance(self, p0, p1, p2, p3); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) { +val* var /* : RuntimeVariable */; +val* var_a /* var a: MAttribute */; +val* var_recv /* var recv: RuntimeVariable */; +val* var1 /* : MClassType */; +val* var2 /* : RuntimeVariable */; +val* var_res /* var res: RuntimeVariable */; +val* var3 /* : MPropDef */; +val* var5 /* : MPropDef */; +val* var6 /* : nullable MType */; +val* var8 /* : nullable MType */; +val* var_mtype /* var mtype: MType */; +val* var9 /* : MPropDef */; +val* var11 /* : MPropDef */; +val* var12 /* : MClassDef */; +val* var14 /* : MClassDef */; +val* var_intromclassdef /* var intromclassdef: MClassDef */; +val* var15 /* : MClassType */; +val* var17 /* : MClassType */; +val* var18 /* : MClassType */; +val* var20 /* : MClassType */; +val* var21 /* : MModule */; +val* var23 /* : MModule */; +short int var24 /* : Bool */; +val* var25 /* : MType */; +short int var26 /* : Bool */; +int cltype; +int idtype; +static val* varonce; +val* var27 /* : String */; +char* var28 /* : NativeString */; +long var29 /* : Int */; +val* var30 /* : FlatString */; +static val* varonce31; +val* var32 /* : String */; +char* var33 /* : NativeString */; +long var34 /* : Int */; +val* var35 /* : FlatString */; +val* var36 /* : String */; +static val* varonce37; +val* var38 /* : String */; +char* var39 /* : NativeString */; +long var40 /* : Int */; +val* var41 /* : FlatString */; +val* var42 /* : Array[Object] */; +long var43 /* : Int */; +val* var44 /* : NativeArray[Object] */; +val* var45 /* : String */; +val* var46 /* : String */; +val* var47 /* : AbstractCompiler */; +val* var49 /* : AbstractCompiler */; +val* var50 /* : ModelBuilder */; +val* var52 /* : ModelBuilder */; +val* var53 /* : ToolContext */; +val* var55 /* : ToolContext */; +val* var56 /* : OptionBool */; +val* var58 /* : OptionBool */; +val* var59 /* : nullable Object */; +val* var61 /* : nullable Object */; +short int var62 /* : Bool */; +static val* varonce63; +val* var64 /* : String */; +char* var65 /* : NativeString */; +long var66 /* : Int */; +val* var67 /* : FlatString */; +static val* varonce68; +val* var69 /* : String */; +char* var70 /* : NativeString */; +long var71 /* : Int */; +val* var72 /* : FlatString */; +val* var73 /* : String */; +static val* varonce74; +val* var75 /* : String */; +char* var76 /* : NativeString */; +long var77 /* : Int */; +val* var78 /* : FlatString */; +static val* varonce79; +val* var80 /* : String */; +char* var81 /* : NativeString */; +long var82 /* : Int */; +val* var83 /* : FlatString */; +val* var84 /* : String */; +static val* varonce85; +val* var86 /* : String */; +char* var87 /* : NativeString */; +long var88 /* : Int */; +val* var89 /* : FlatString */; +val* var90 /* : Array[Object] */; +long var91 /* : Int */; +val* var92 /* : NativeArray[Object] */; +val* var93 /* : String */; +val* var94 /* : String */; +static val* varonce95; +val* var96 /* : String */; +char* var97 /* : NativeString */; +long var98 /* : Int */; +val* var99 /* : FlatString */; +short int var100 /* : Bool */; +short int var101 /* : Bool */; +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 */; +val* var112 /* : String */; +static val* varonce113; +val* var114 /* : String */; +char* var115 /* : NativeString */; +long var116 /* : Int */; +val* var117 /* : FlatString */; +static val* varonce118; +val* var119 /* : String */; +char* var120 /* : NativeString */; +long var121 /* : Int */; +val* var122 /* : FlatString */; +val* var123 /* : String */; +static val* varonce124; +val* var125 /* : String */; +char* var126 /* : NativeString */; +long var127 /* : Int */; +val* var128 /* : FlatString */; +val* var129 /* : Array[Object] */; +long var130 /* : Int */; +val* var131 /* : NativeArray[Object] */; +val* var132 /* : String */; +static val* varonce133; +val* var134 /* : String */; +char* var135 /* : NativeString */; +long var136 /* : Int */; +val* var137 /* : FlatString */; +static val* varonce138; +val* var139 /* : String */; +char* var140 /* : NativeString */; +long var141 /* : Int */; +val* var142 /* : FlatString */; +val* var143 /* : String */; +static val* varonce144; +val* var145 /* : String */; +char* var146 /* : NativeString */; +long var147 /* : Int */; +val* var148 /* : FlatString */; +val* var149 /* : Array[Object] */; +long var150 /* : Int */; +val* var151 /* : NativeArray[Object] */; +val* var152 /* : String */; +var_a = p0; +var_recv = p1; +{ +abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on */ +} +{ +var1 = abstract_compiler__AbstractCompilerVisitor__bool_type(self); +} +{ +var2 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var1); +} +var_res = var2; +{ +{ /* Inline model#MProperty#intro (var_a) on */ +var5 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline model#MAttributeDef#static_mtype (var3) on */ +var8 = var3->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on */ +var6 = var8; +RET_LABEL7:(void)0; +} +} +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1305); +show_backtrace(1); +} +var_mtype = var6; +{ +{ /* Inline model#MProperty#intro (var_a) on */ +var11 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var9) on */ +var14 = var9->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +var_intromclassdef = var12; +{ +{ /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on */ +var17 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var15 = var17; +RET_LABEL16:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on */ +var20 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +{ +{ /* Inline model#MClassDef#mmodule (var_intromclassdef) on */ +var23 = var_intromclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489); +show_backtrace(1); +} +var21 = var23; +RET_LABEL22:(void)0; +} +} +var24 = 1; +{ +var25 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var15, var18, var21, var24) /* resolve_for on */; +} +var_mtype = var25; +/* isa MNullableType */ +cltype = type_model__MNullableType.color; +idtype = type_model__MNullableType.id; +if(cltype >= var_mtype->type->table_size) { +var26 = 0; +} else { +var26 = var_mtype->type->type_table[cltype] == idtype; +} +if (var26){ +if (varonce) { +var27 = varonce; +} else { +var28 = " = 1; /* easy isset: "; +var29 = 21; +var30 = string__NativeString__to_s_with_length(var28, var29); +var27 = var30; +varonce = var27; +} +if (varonce31) { +var32 = varonce31; +} else { +var33 = " on "; +var34 = 4; +var35 = string__NativeString__to_s_with_length(var33, var34); +var32 = var35; +varonce31 = var32; +} +{ +var36 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce37) { +var38 = varonce37; +} else { +var39 = " */"; +var40 = 3; +var41 = string__NativeString__to_s_with_length(var39, var40); +var38 = var41; +varonce37 = var38; +} +var42 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var42 = array_instance Array[Object] */ +var43 = 6; +var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var44)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var44)->values[1] = (val*) var27; +((struct instance_array__NativeArray*)var44)->values[2] = (val*) var_a; +((struct instance_array__NativeArray*)var44)->values[3] = (val*) var32; +((struct instance_array__NativeArray*)var44)->values[4] = (val*) var36; +((struct instance_array__NativeArray*)var44)->values[5] = (val*) var38; +{ +((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on */; +} +} +{ +var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var45); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +var = var_res; +goto RET_LABEL; +} else { +} +{ +var46 = separate_compiler__MProperty__const_color(var_a); +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var46); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var49 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var49 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var47 = var49; +RET_LABEL48:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var47) on */ +var52 = var47->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var52 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var50 = var52; +RET_LABEL51:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var50) on */ +var55 = var50->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var55 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var53 = var55; +RET_LABEL54:(void)0; +} +} +{ +{ /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var53) on */ +var58 = var53->attrs[COLOR_separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on */ +if (unlikely(var58 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 28); +show_backtrace(1); +} +var56 = var58; +RET_LABEL57:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var56) on */ +var61 = var56->attrs[COLOR_opts__Option___value].val; /* _value on */ +var59 = var61; +RET_LABEL60:(void)0; +} +} +var62 = ((struct instance_kernel__Bool*)var59)->value; /* autounbox from nullable Object to Bool */; +if (var62){ +if (varonce63) { +var64 = varonce63; +} else { +var65 = " = "; +var66 = 3; +var67 = string__NativeString__to_s_with_length(var65, var66); +var64 = var67; +varonce63 = var64; +} +if (varonce68) { +var69 = varonce68; +} else { +var70 = "->attrs["; +var71 = 8; +var72 = string__NativeString__to_s_with_length(var70, var71); +var69 = var72; +varonce68 = var69; +} +{ +var73 = separate_compiler__MProperty__const_color(var_a); +} +if (varonce74) { +var75 = varonce74; +} else { +var76 = "] != NULL; /* "; +var77 = 14; +var78 = string__NativeString__to_s_with_length(var76, var77); +var75 = var78; +varonce74 = var75; +} +if (varonce79) { +var80 = varonce79; +} else { +var81 = " on "; +var82 = 4; +var83 = string__NativeString__to_s_with_length(var81, var82); +var80 = var83; +varonce79 = var80; +} +{ +var84 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce85) { +var86 = varonce85; +} else { +var87 = "*/"; +var88 = 2; +var89 = string__NativeString__to_s_with_length(var87, var88); +var86 = var89; +varonce85 = var86; +} +var90 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var90 = array_instance Array[Object] */ +var91 = 10; +var92 = NEW_array__NativeArray(var91, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var92)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var92)->values[1] = (val*) var64; +((struct instance_array__NativeArray*)var92)->values[2] = (val*) var_recv; +((struct instance_array__NativeArray*)var92)->values[3] = (val*) var69; +((struct instance_array__NativeArray*)var92)->values[4] = (val*) var73; +((struct instance_array__NativeArray*)var92)->values[5] = (val*) var75; +((struct instance_array__NativeArray*)var92)->values[6] = (val*) var_a; +((struct instance_array__NativeArray*)var92)->values[7] = (val*) var80; +((struct instance_array__NativeArray*)var92)->values[8] = (val*) var84; +((struct instance_array__NativeArray*)var92)->values[9] = (val*) var86; +{ +((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on */; +} +} +{ +var93 = ((val* (*)(val*))(var90->class->vft[COLOR_string__Object__to_s]))(var90) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var93); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +{ +var94 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on */; +} +if (varonce95) { +var96 = varonce95; +} else { +var97 = "val*"; +var98 = 4; +var99 = string__NativeString__to_s_with_length(var97, var98); +var96 = var99; +varonce95 = var96; +} +{ +var101 = string__FlatString___61d_61d(var94, var96); +var100 = var101; +} +if (var100){ +if (varonce102) { +var103 = varonce102; +} else { +var104 = " = "; +var105 = 3; +var106 = string__NativeString__to_s_with_length(var104, var105); +var103 = var106; +varonce102 = var103; +} +if (varonce107) { +var108 = varonce107; +} else { +var109 = "->attrs["; +var110 = 8; +var111 = string__NativeString__to_s_with_length(var109, var110); +var108 = var111; +varonce107 = var108; +} +{ +var112 = separate_compiler__MProperty__const_color(var_a); +} +if (varonce113) { +var114 = varonce113; +} else { +var115 = "].val != NULL; /* "; +var116 = 18; +var117 = string__NativeString__to_s_with_length(var115, var116); +var114 = var117; +varonce113 = var114; +} +if (varonce118) { +var119 = varonce118; +} else { +var120 = " on "; +var121 = 4; +var122 = string__NativeString__to_s_with_length(var120, var121); +var119 = var122; +varonce118 = var119; +} +{ +var123 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce124) { +var125 = varonce124; +} else { +var126 = " */"; +var127 = 3; +var128 = string__NativeString__to_s_with_length(var126, var127); +var125 = var128; +varonce124 = var125; +} +var129 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var129 = array_instance Array[Object] */ +var130 = 10; +var131 = NEW_array__NativeArray(var130, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var131)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var131)->values[1] = (val*) var103; +((struct instance_array__NativeArray*)var131)->values[2] = (val*) var_recv; +((struct instance_array__NativeArray*)var131)->values[3] = (val*) var108; +((struct instance_array__NativeArray*)var131)->values[4] = (val*) var112; +((struct instance_array__NativeArray*)var131)->values[5] = (val*) var114; +((struct instance_array__NativeArray*)var131)->values[6] = (val*) var_a; +((struct instance_array__NativeArray*)var131)->values[7] = (val*) var119; +((struct instance_array__NativeArray*)var131)->values[8] = (val*) var123; +((struct instance_array__NativeArray*)var131)->values[9] = (val*) var125; +{ +((void (*)(val*, val*, long))(var129->class->vft[COLOR_array__Array__with_native]))(var129, var131, var130) /* with_native on */; +} +} +{ +var132 = ((val* (*)(val*))(var129->class->vft[COLOR_string__Object__to_s]))(var129) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var132); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +if (varonce133) { +var134 = varonce133; +} else { +var135 = " = 1; /* NOT YET IMPLEMENTED: isset of primitives: "; +var136 = 51; +var137 = string__NativeString__to_s_with_length(var135, var136); +var134 = var137; +varonce133 = var134; +} +if (varonce138) { +var139 = varonce138; +} else { +var140 = " on "; +var141 = 4; +var142 = string__NativeString__to_s_with_length(var140, var141); +var139 = var142; +varonce138 = var139; +} +{ +var143 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce144) { +var145 = varonce144; +} else { +var146 = " */"; +var147 = 3; +var148 = string__NativeString__to_s_with_length(var146, var147); +var145 = var148; +varonce144 = var145; +} +var149 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var149 = array_instance Array[Object] */ +var150 = 6; +var151 = NEW_array__NativeArray(var150, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var151)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var151)->values[1] = (val*) var134; +((struct instance_array__NativeArray*)var151)->values[2] = (val*) var_a; +((struct instance_array__NativeArray*)var151)->values[3] = (val*) var139; +((struct instance_array__NativeArray*)var151)->values[4] = (val*) var143; +((struct instance_array__NativeArray*)var151)->values[5] = (val*) var145; +{ +((void (*)(val*, val*, long))(var149->class->vft[COLOR_array__Array__with_native]))(var149, var151, var150) /* with_native on */; +} +} +{ +var152 = ((val* (*)(val*))(var149->class->vft[COLOR_string__Object__to_s]))(var149) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var152); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) { +val* var /* : RuntimeVariable */; +val* var1 /* : RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__isset_attribute(self, p0, p1); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) { +val* var /* : RuntimeVariable */; +val* var_a /* var a: MAttribute */; +val* var_recv /* var recv: RuntimeVariable */; +val* var1 /* : MPropDef */; +val* var3 /* : MPropDef */; +val* var4 /* : nullable MType */; +val* var6 /* : nullable MType */; +val* var_ret /* var ret: MType */; +val* var7 /* : MPropDef */; +val* var9 /* : MPropDef */; +val* var10 /* : MClassDef */; +val* var12 /* : MClassDef */; +val* var_intromclassdef /* var intromclassdef: MClassDef */; +val* var13 /* : MClassType */; +val* var15 /* : MClassType */; +val* var16 /* : MClassType */; +val* var18 /* : MClassType */; +val* var19 /* : MModule */; +val* var21 /* : MModule */; +short int var22 /* : Bool */; +val* var23 /* : MType */; +val* var24 /* : AbstractCompiler */; +val* var26 /* : AbstractCompiler */; +val* var27 /* : ModelBuilder */; +val* var29 /* : ModelBuilder */; +val* var30 /* : ToolContext */; +val* var32 /* : ToolContext */; +val* var33 /* : OptionBool */; +val* var35 /* : OptionBool */; +val* var36 /* : nullable Object */; +val* var38 /* : nullable Object */; +short int var39 /* : Bool */; +val* var40 /* : AbstractCompiler */; +val* var42 /* : AbstractCompiler */; +val* var_ /* var : SeparateCompiler */; +long var43 /* : Int */; +long var45 /* : Int */; +long var46 /* : Int */; +long var47 /* : Int */; +short int var49 /* : Bool */; +int cltype; +int idtype; +const char* var_class_name; +long var50 /* : Int */; +static val* varonce; +val* var52 /* : String */; +char* var53 /* : NativeString */; +long var54 /* : Int */; +val* var55 /* : FlatString */; +val* var56 /* : String */; +val* var57 /* : AbstractCompiler */; +val* var59 /* : AbstractCompiler */; +val* var60 /* : ModelBuilder */; +val* var62 /* : ModelBuilder */; +val* var63 /* : ToolContext */; +val* var65 /* : ToolContext */; +val* var66 /* : OptionBool */; +val* var68 /* : OptionBool */; +val* var69 /* : nullable Object */; +val* var71 /* : nullable Object */; +short int var72 /* : Bool */; +val* var73 /* : MClassType */; +val* var74 /* : MType */; +val* var_cret /* var cret: MType */; +val* var75 /* : RuntimeVariable */; +val* var_res /* var res: RuntimeVariable */; +static val* varonce77; +val* var78 /* : String */; +char* var79 /* : NativeString */; +long var80 /* : Int */; +val* var81 /* : FlatString */; +static val* varonce82; +val* var83 /* : String */; +char* var84 /* : NativeString */; +long var85 /* : Int */; +val* var86 /* : FlatString */; +val* var87 /* : String */; +static val* varonce88; +val* var89 /* : String */; +char* var90 /* : NativeString */; +long var91 /* : Int */; +val* var92 /* : FlatString */; +static val* varonce93; +val* var94 /* : String */; +char* var95 /* : NativeString */; +long var96 /* : Int */; +val* var97 /* : FlatString */; +val* var98 /* : String */; +static val* varonce99; +val* var100 /* : String */; +char* var101 /* : NativeString */; +long var102 /* : Int */; +val* var103 /* : FlatString */; +val* var104 /* : Array[Object] */; +long var105 /* : Int */; +val* var106 /* : NativeArray[Object] */; +val* var107 /* : String */; +short int var108 /* : Bool */; +short int var109 /* : Bool */; +int cltype110; +int idtype111; +short int var112 /* : Bool */; +short int var_113 /* var : Bool */; +val* var114 /* : AbstractCompiler */; +val* var116 /* : AbstractCompiler */; +val* var117 /* : ModelBuilder */; +val* var119 /* : ModelBuilder */; +val* var120 /* : ToolContext */; +val* var122 /* : ToolContext */; +val* var123 /* : OptionBool */; +val* var125 /* : OptionBool */; +val* var126 /* : nullable Object */; +val* var128 /* : nullable Object */; +short int var129 /* : Bool */; +short int var130 /* : Bool */; +static val* varonce131; +val* var132 /* : String */; +char* var133 /* : NativeString */; +long var134 /* : Int */; +val* var135 /* : FlatString */; +static val* varonce136; +val* var137 /* : String */; +char* var138 /* : NativeString */; +long var139 /* : Int */; +val* var140 /* : FlatString */; +val* var141 /* : Array[Object] */; +long var142 /* : Int */; +val* var143 /* : NativeArray[Object] */; +val* var144 /* : String */; +static val* varonce145; +val* var146 /* : String */; +char* var147 /* : NativeString */; +long var148 /* : Int */; +val* var149 /* : FlatString */; +val* var150 /* : String */; +val* var152 /* : String */; +val* var153 /* : Array[Object] */; +long var154 /* : Int */; +val* var155 /* : NativeArray[Object] */; +val* var156 /* : String */; +static val* varonce157; +val* var158 /* : String */; +char* var159 /* : NativeString */; +long var160 /* : Int */; +val* var161 /* : FlatString */; +val* var162 /* : AbstractCompiler */; +val* var164 /* : AbstractCompiler */; +val* var165 /* : ModelBuilder */; +val* var167 /* : ModelBuilder */; +val* var168 /* : ToolContext */; +val* var170 /* : ToolContext */; +val* var171 /* : OptionBool */; +val* var173 /* : OptionBool */; +val* var174 /* : nullable Object */; +val* var176 /* : nullable Object */; +short int var177 /* : Bool */; +val* var178 /* : AbstractCompiler */; +val* var180 /* : AbstractCompiler */; +val* var_181 /* var : SeparateCompiler */; +long var182 /* : Int */; +long var184 /* : Int */; +long var185 /* : Int */; +long var186 /* : Int */; +short int var188 /* : Bool */; +int cltype189; +int idtype190; +const char* var_class_name191; +long var192 /* : Int */; +static val* varonce194; +val* var195 /* : String */; +char* var196 /* : NativeString */; +long var197 /* : Int */; +val* var198 /* : FlatString */; +val* var199 /* : RuntimeVariable */; +val* var200 /* : RuntimeVariable */; +val* var_res201 /* var res: RuntimeVariable */; +static val* varonce202; +val* var203 /* : String */; +char* var204 /* : NativeString */; +long var205 /* : Int */; +val* var206 /* : FlatString */; +static val* varonce207; +val* var208 /* : String */; +char* var209 /* : NativeString */; +long var210 /* : Int */; +val* var211 /* : FlatString */; +val* var212 /* : String */; +static val* varonce213; +val* var214 /* : String */; +char* var215 /* : NativeString */; +long var216 /* : Int */; +val* var217 /* : FlatString */; +val* var218 /* : String */; +static val* varonce219; +val* var220 /* : String */; +char* var221 /* : NativeString */; +long var222 /* : Int */; +val* var223 /* : FlatString */; +static val* varonce224; +val* var225 /* : String */; +char* var226 /* : NativeString */; +long var227 /* : Int */; +val* var228 /* : FlatString */; +val* var229 /* : String */; +static val* varonce230; +val* var231 /* : String */; +char* var232 /* : NativeString */; +long var233 /* : Int */; +val* var234 /* : FlatString */; +val* var235 /* : Array[Object] */; +long var236 /* : Int */; +val* var237 /* : NativeArray[Object] */; +val* var238 /* : String */; +short int var239 /* : Bool */; +short int var240 /* : Bool */; +val* var241 /* : String */; +static val* varonce242; +val* var243 /* : String */; +char* var244 /* : NativeString */; +long var245 /* : Int */; +val* var246 /* : FlatString */; +short int var247 /* : Bool */; +short int var248 /* : Bool */; +short int var_249 /* var : Bool */; +short int var250 /* : Bool */; +int cltype251; +int idtype252; +short int var253 /* : Bool */; +short int var_254 /* var : Bool */; +val* var255 /* : AbstractCompiler */; +val* var257 /* : AbstractCompiler */; +val* var258 /* : ModelBuilder */; +val* var260 /* : ModelBuilder */; +val* var261 /* : ToolContext */; +val* var263 /* : ToolContext */; +val* var264 /* : OptionBool */; +val* var266 /* : OptionBool */; +val* var267 /* : nullable Object */; +val* var269 /* : nullable Object */; +short int var270 /* : Bool */; +short int var271 /* : Bool */; +static val* varonce272; +val* var273 /* : String */; +char* var274 /* : NativeString */; +long var275 /* : Int */; +val* var276 /* : FlatString */; +static val* varonce277; +val* var278 /* : String */; +char* var279 /* : NativeString */; +long var280 /* : Int */; +val* var281 /* : FlatString */; +val* var282 /* : Array[Object] */; +long var283 /* : Int */; +val* var284 /* : NativeArray[Object] */; +val* var285 /* : String */; +static val* varonce286; +val* var287 /* : String */; +char* var288 /* : NativeString */; +long var289 /* : Int */; +val* var290 /* : FlatString */; +val* var291 /* : String */; +val* var293 /* : String */; +val* var294 /* : Array[Object] */; +long var295 /* : Int */; +val* var296 /* : NativeArray[Object] */; +val* var297 /* : String */; +static val* varonce298; +val* var299 /* : String */; +char* var300 /* : NativeString */; +long var301 /* : Int */; +val* var302 /* : FlatString */; +val* var303 /* : AbstractCompiler */; +val* var305 /* : AbstractCompiler */; +val* var306 /* : ModelBuilder */; +val* var308 /* : ModelBuilder */; +val* var309 /* : ToolContext */; +val* var311 /* : ToolContext */; +val* var312 /* : OptionBool */; +val* var314 /* : OptionBool */; +val* var315 /* : nullable Object */; +val* var317 /* : nullable Object */; +short int var318 /* : Bool */; +val* var319 /* : AbstractCompiler */; +val* var321 /* : AbstractCompiler */; +val* var_322 /* var : SeparateCompiler */; +long var323 /* : Int */; +long var325 /* : Int */; +long var326 /* : Int */; +long var327 /* : Int */; +short int var329 /* : Bool */; +int cltype330; +int idtype331; +const char* var_class_name332; +long var333 /* : Int */; +static val* varonce335; +val* var336 /* : String */; +char* var337 /* : NativeString */; +long var338 /* : Int */; +val* var339 /* : FlatString */; +var_a = p0; +var_recv = p1; +{ +abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on */ +} +{ +{ /* Inline model#MProperty#intro (var_a) on */ +var3 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +{ /* Inline model#MAttributeDef#static_mtype (var1) on */ +var6 = var1->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on */ +var4 = var6; +RET_LABEL5:(void)0; +} +} +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1333); +show_backtrace(1); +} +var_ret = var4; +{ +{ /* Inline model#MProperty#intro (var_a) on */ +var9 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var7) on */ +var12 = var7->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} +} +var_intromclassdef = var10; +{ +{ /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on */ +var15 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var13 = var15; +RET_LABEL14:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on */ +var18 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} +{ +{ /* Inline model#MClassDef#mmodule (var_intromclassdef) on */ +var21 = var_intromclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489); +show_backtrace(1); +} +var19 = var21; +RET_LABEL20:(void)0; +} +} +var22 = 1; +{ +var23 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var13, var16, var19, var22) /* resolve_for on */; +} +var_ret = var23; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var26 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var24) on */ +var29 = var24->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var29 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var27 = var29; +RET_LABEL28:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var27) on */ +var32 = var27->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var32 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var30 = var32; +RET_LABEL31:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var30) on */ +var35 = var30->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on */ +if (unlikely(var35 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 65); +show_backtrace(1); +} +var33 = var35; +RET_LABEL34:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var33) on */ +var38 = var33->attrs[COLOR_opts__Option___value].val; /* _value on */ +var36 = var38; +RET_LABEL37:(void)0; +} +} +var39 = ((struct instance_kernel__Bool*)var36)->value; /* autounbox from nullable Object to Bool */; +if (var39){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var42 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var42 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var40 = var42; +RET_LABEL41:(void)0; +} +} +var_ = var40; +{ +{ /* Inline separate_compiler#SeparateCompiler#attr_read_count (var_) on */ +var45 = var_->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l; /* _attr_read_count on */ +var43 = var45; +RET_LABEL44:(void)0; +} +} +var46 = 1; +{ +{ /* Inline kernel#Int#+ (var43,var46) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var49 = 1; /* easy isa OTHER*/ +if (unlikely(!var49)) { +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", 374); +show_backtrace(1); +} +var50 = var43 + var46; +var47 = var50; +goto RET_LABEL48; +RET_LABEL48:(void)0; +} +} +{ +{ /* Inline separate_compiler#SeparateCompiler#attr_read_count= (var_,var47) on */ +var_->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l = var47; /* _attr_read_count on */ +RET_LABEL51:(void)0; +} +} +if (varonce) { +var52 = varonce; +} else { +var53 = "count_attr_reads++;"; +var54 = 19; +var55 = string__NativeString__to_s_with_length(var53, var54); +var52 = var55; +varonce = var52; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var52); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +} +{ +var56 = separate_compiler__MProperty__const_color(var_a); +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var56); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var59 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var59 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var57 = var59; +RET_LABEL58:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var57) on */ +var62 = var57->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var62 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var60 = var62; +RET_LABEL61:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var60) on */ +var65 = var60->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var65 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var63 = var65; +RET_LABEL64:(void)0; +} +} +{ +{ /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var63) on */ +var68 = var63->attrs[COLOR_separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on */ +if (unlikely(var68 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 28); +show_backtrace(1); +} +var66 = var68; +RET_LABEL67:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var66) on */ +var71 = var66->attrs[COLOR_opts__Option___value].val; /* _value on */ +var69 = var71; +RET_LABEL70:(void)0; +} +} +var72 = ((struct instance_kernel__Bool*)var69)->value; /* autounbox from nullable Object to Bool */; +if (var72){ +{ +var73 = abstract_compiler__AbstractCompilerVisitor__object_type(self); +} +{ +var74 = model__MType__as_nullable(var73); +} +var_cret = var74; +{ +var75 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_cret); +} +var_res = var75; +{ +{ /* Inline abstract_compiler#RuntimeVariable#mcasttype= (var_res,var_ret) on */ +var_res->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val = var_ret; /* _mcasttype on */ +RET_LABEL76:(void)0; +} +} +if (varonce77) { +var78 = varonce77; +} else { +var79 = " = "; +var80 = 3; +var81 = string__NativeString__to_s_with_length(var79, var80); +var78 = var81; +varonce77 = var78; +} +if (varonce82) { +var83 = varonce82; +} else { +var84 = "->attrs["; +var85 = 8; +var86 = string__NativeString__to_s_with_length(var84, var85); +var83 = var86; +varonce82 = var83; +} +{ +var87 = separate_compiler__MProperty__const_color(var_a); +} +if (varonce88) { +var89 = varonce88; +} else { +var90 = "]; /* "; +var91 = 6; +var92 = string__NativeString__to_s_with_length(var90, var91); +var89 = var92; +varonce88 = var89; +} +if (varonce93) { +var94 = varonce93; +} else { +var95 = " on "; +var96 = 4; +var97 = string__NativeString__to_s_with_length(var95, var96); +var94 = var97; +varonce93 = var94; +} +{ +var98 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce99) { +var100 = varonce99; +} else { +var101 = " */"; +var102 = 3; +var103 = string__NativeString__to_s_with_length(var101, var102); +var100 = var103; +varonce99 = var100; +} +var104 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var104 = array_instance Array[Object] */ +var105 = 10; +var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var106)->values[0] = (val*) var_res; +((struct instance_array__NativeArray*)var106)->values[1] = (val*) var78; +((struct instance_array__NativeArray*)var106)->values[2] = (val*) var_recv; +((struct instance_array__NativeArray*)var106)->values[3] = (val*) var83; +((struct instance_array__NativeArray*)var106)->values[4] = (val*) var87; +((struct instance_array__NativeArray*)var106)->values[5] = (val*) var89; +((struct instance_array__NativeArray*)var106)->values[6] = (val*) var_a; +((struct instance_array__NativeArray*)var106)->values[7] = (val*) var94; +((struct instance_array__NativeArray*)var106)->values[8] = (val*) var98; +((struct instance_array__NativeArray*)var106)->values[9] = (val*) var100; +{ +((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on */; +} +} +{ +var107 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var107); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +/* isa MNullableType */ +cltype110 = type_model__MNullableType.color; +idtype111 = type_model__MNullableType.id; +if(cltype110 >= var_ret->type->table_size) { +var109 = 0; +} else { +var109 = var_ret->type->type_table[cltype110] == idtype111; +} +var112 = !var109; +var_113 = var112; +if (var112){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var116 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var116 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var114 = var116; +RET_LABEL115:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var114) on */ +var119 = var114->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var119 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var117 = var119; +RET_LABEL118:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var117) on */ +var122 = var117->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var122 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var120 = var122; +RET_LABEL121:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_no_check_attr_isset (var120) on */ +var125 = var120->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on */ +if (unlikely(var125 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 51); +show_backtrace(1); +} +var123 = var125; +RET_LABEL124:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var123) on */ +var128 = var123->attrs[COLOR_opts__Option___value].val; /* _value on */ +var126 = var128; +RET_LABEL127:(void)0; +} +} +var129 = ((struct instance_kernel__Bool*)var126)->value; /* autounbox from nullable Object to Bool */; +var130 = !var129; +var108 = var130; +} else { +var108 = var_113; +} +if (var108){ +if (varonce131) { +var132 = varonce131; +} else { +var133 = "if (unlikely("; +var134 = 13; +var135 = string__NativeString__to_s_with_length(var133, var134); +var132 = var135; +varonce131 = var132; +} +if (varonce136) { +var137 = varonce136; +} else { +var138 = " == NULL)) {"; +var139 = 12; +var140 = string__NativeString__to_s_with_length(var138, var139); +var137 = var140; +varonce136 = var137; +} +var141 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var141 = array_instance Array[Object] */ +var142 = 3; +var143 = NEW_array__NativeArray(var142, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var143)->values[0] = (val*) var132; +((struct instance_array__NativeArray*)var143)->values[1] = (val*) var_res; +((struct instance_array__NativeArray*)var143)->values[2] = (val*) var137; +{ +((void (*)(val*, val*, long))(var141->class->vft[COLOR_array__Array__with_native]))(var141, var143, var142) /* with_native on */; +} +} +{ +var144 = ((val* (*)(val*))(var141->class->vft[COLOR_string__Object__to_s]))(var141) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var144); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce145) { +var146 = varonce145; +} else { +var147 = "Uninitialized attribute "; +var148 = 24; +var149 = string__NativeString__to_s_with_length(var147, var148); +var146 = var149; +varonce145 = var146; +} +{ +{ /* Inline model#MProperty#name (var_a) on */ +var152 = var_a->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var152 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var150 = var152; +RET_LABEL151:(void)0; +} +} +var153 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var153 = array_instance Array[Object] */ +var154 = 2; +var155 = NEW_array__NativeArray(var154, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var155)->values[0] = (val*) var146; +((struct instance_array__NativeArray*)var155)->values[1] = (val*) var150; +{ +((void (*)(val*, val*, long))(var153->class->vft[COLOR_array__Array__with_native]))(var153, var155, var154) /* with_native on */; +} +} +{ +var156 = ((val* (*)(val*))(var153->class->vft[COLOR_string__Object__to_s]))(var153) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add_abort(self, var156); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on */ +} +if (varonce157) { +var158 = varonce157; +} else { +var159 = "}"; +var160 = 1; +var161 = string__NativeString__to_s_with_length(var159, var160); +var158 = var161; +varonce157 = var158; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var158); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var164 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var164 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var162 = var164; +RET_LABEL163:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var162) on */ +var167 = var162->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var167 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var165 = var167; +RET_LABEL166:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var165) on */ +var170 = var165->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var170 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var168 = var170; +RET_LABEL169:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var168) on */ +var173 = var168->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on */ +if (unlikely(var173 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 65); +show_backtrace(1); +} +var171 = var173; +RET_LABEL172:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var171) on */ +var176 = var171->attrs[COLOR_opts__Option___value].val; /* _value on */ +var174 = var176; +RET_LABEL175:(void)0; +} +} +var177 = ((struct instance_kernel__Bool*)var174)->value; /* autounbox from nullable Object to Bool */; +if (var177){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var180 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var180 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var178 = var180; +RET_LABEL179:(void)0; +} +} +var_181 = var178; +{ +{ /* Inline separate_compiler#SeparateCompiler#isset_checks_count (var_181) on */ +var184 = var_181->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on */ +var182 = var184; +RET_LABEL183:(void)0; +} +} +var185 = 1; +{ +{ /* Inline kernel#Int#+ (var182,var185) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var188 = 1; /* easy isa OTHER*/ +if (unlikely(!var188)) { +var_class_name191 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name191); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var192 = var182 + var185; +var186 = var192; +goto RET_LABEL187; +RET_LABEL187:(void)0; +} +} +{ +{ /* Inline separate_compiler#SeparateCompiler#isset_checks_count= (var_181,var186) on */ +var_181->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l = var186; /* _isset_checks_count on */ +RET_LABEL193:(void)0; +} +} +if (varonce194) { +var195 = varonce194; +} else { +var196 = "count_isset_checks++;"; +var197 = 21; +var198 = string__NativeString__to_s_with_length(var196, var197); +var195 = var198; +varonce194 = var195; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var195); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +} +} else { +} +{ +var199 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_res, var_ret); +} +var = var199; +goto RET_LABEL; +} else { +{ +var200 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_ret); +} +var_res201 = var200; +if (varonce202) { +var203 = varonce202; +} else { +var204 = " = "; +var205 = 3; +var206 = string__NativeString__to_s_with_length(var204, var205); +var203 = var206; +varonce202 = var203; +} +if (varonce207) { +var208 = varonce207; +} else { +var209 = "->attrs["; +var210 = 8; +var211 = string__NativeString__to_s_with_length(var209, var210); +var208 = var211; +varonce207 = var208; +} +{ +var212 = separate_compiler__MProperty__const_color(var_a); +} +if (varonce213) { +var214 = varonce213; +} else { +var215 = "]."; +var216 = 2; +var217 = string__NativeString__to_s_with_length(var215, var216); +var214 = var217; +varonce213 = var214; +} +{ +var218 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_ret) /* ctypename on */; +} +if (varonce219) { +var220 = varonce219; +} else { +var221 = "; /* "; +var222 = 5; +var223 = string__NativeString__to_s_with_length(var221, var222); +var220 = var223; +varonce219 = var220; +} +if (varonce224) { +var225 = varonce224; +} else { +var226 = " on "; +var227 = 4; +var228 = string__NativeString__to_s_with_length(var226, var227); +var225 = var228; +varonce224 = var225; +} +{ +var229 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce230) { +var231 = varonce230; +} else { +var232 = " */"; +var233 = 3; +var234 = string__NativeString__to_s_with_length(var232, var233); +var231 = var234; +varonce230 = var231; +} +var235 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var235 = array_instance Array[Object] */ +var236 = 12; +var237 = NEW_array__NativeArray(var236, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var237)->values[0] = (val*) var_res201; +((struct instance_array__NativeArray*)var237)->values[1] = (val*) var203; +((struct instance_array__NativeArray*)var237)->values[2] = (val*) var_recv; +((struct instance_array__NativeArray*)var237)->values[3] = (val*) var208; +((struct instance_array__NativeArray*)var237)->values[4] = (val*) var212; +((struct instance_array__NativeArray*)var237)->values[5] = (val*) var214; +((struct instance_array__NativeArray*)var237)->values[6] = (val*) var218; +((struct instance_array__NativeArray*)var237)->values[7] = (val*) var220; +((struct instance_array__NativeArray*)var237)->values[8] = (val*) var_a; +((struct instance_array__NativeArray*)var237)->values[9] = (val*) var225; +((struct instance_array__NativeArray*)var237)->values[10] = (val*) var229; +((struct instance_array__NativeArray*)var237)->values[11] = (val*) var231; +{ +((void (*)(val*, val*, long))(var235->class->vft[COLOR_array__Array__with_native]))(var235, var237, var236) /* with_native on */; +} +} +{ +var238 = ((val* (*)(val*))(var235->class->vft[COLOR_string__Object__to_s]))(var235) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var238); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +{ +var241 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on */; +} +if (varonce242) { +var243 = varonce242; +} else { +var244 = "val*"; +var245 = 4; +var246 = string__NativeString__to_s_with_length(var244, var245); +var243 = var246; +varonce242 = var243; +} +{ +var248 = string__FlatString___61d_61d(var241, var243); +var247 = var248; +} +var_249 = var247; +if (var247){ +/* isa MNullableType */ +cltype251 = type_model__MNullableType.color; +idtype252 = type_model__MNullableType.id; +if(cltype251 >= var_ret->type->table_size) { +var250 = 0; +} else { +var250 = var_ret->type->type_table[cltype251] == idtype252; +} +var253 = !var250; +var240 = var253; +} else { +var240 = var_249; +} +var_254 = var240; +if (var240){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var257 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var257 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var255 = var257; +RET_LABEL256:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var255) on */ +var260 = var255->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var260 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var258 = var260; +RET_LABEL259:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var258) on */ +var263 = var258->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var263 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var261 = var263; +RET_LABEL262:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_no_check_attr_isset (var261) on */ +var266 = var261->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on */ +if (unlikely(var266 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 51); +show_backtrace(1); +} +var264 = var266; +RET_LABEL265:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var264) on */ +var269 = var264->attrs[COLOR_opts__Option___value].val; /* _value on */ +var267 = var269; +RET_LABEL268:(void)0; +} +} +var270 = ((struct instance_kernel__Bool*)var267)->value; /* autounbox from nullable Object to Bool */; +var271 = !var270; +var239 = var271; +} else { +var239 = var_254; +} +if (var239){ +if (varonce272) { +var273 = varonce272; +} else { +var274 = "if (unlikely("; +var275 = 13; +var276 = string__NativeString__to_s_with_length(var274, var275); +var273 = var276; +varonce272 = var273; +} +if (varonce277) { +var278 = varonce277; +} else { +var279 = " == NULL)) {"; +var280 = 12; +var281 = string__NativeString__to_s_with_length(var279, var280); +var278 = var281; +varonce277 = var278; +} +var282 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var282 = array_instance Array[Object] */ +var283 = 3; +var284 = NEW_array__NativeArray(var283, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var284)->values[0] = (val*) var273; +((struct instance_array__NativeArray*)var284)->values[1] = (val*) var_res201; +((struct instance_array__NativeArray*)var284)->values[2] = (val*) var278; +{ +((void (*)(val*, val*, long))(var282->class->vft[COLOR_array__Array__with_native]))(var282, var284, var283) /* with_native on */; +} +} +{ +var285 = ((val* (*)(val*))(var282->class->vft[COLOR_string__Object__to_s]))(var282) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var285); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce286) { +var287 = varonce286; +} else { +var288 = "Uninitialized attribute "; +var289 = 24; +var290 = string__NativeString__to_s_with_length(var288, var289); +var287 = var290; +varonce286 = var287; +} +{ +{ /* Inline model#MProperty#name (var_a) on */ +var293 = var_a->attrs[COLOR_model__MProperty___name].val; /* _name on */ +if (unlikely(var293 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620); +show_backtrace(1); +} +var291 = var293; +RET_LABEL292:(void)0; +} +} +var294 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var294 = array_instance Array[Object] */ +var295 = 2; +var296 = NEW_array__NativeArray(var295, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var296)->values[0] = (val*) var287; +((struct instance_array__NativeArray*)var296)->values[1] = (val*) var291; +{ +((void (*)(val*, val*, long))(var294->class->vft[COLOR_array__Array__with_native]))(var294, var296, var295) /* with_native on */; +} +} +{ +var297 = ((val* (*)(val*))(var294->class->vft[COLOR_string__Object__to_s]))(var294) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add_abort(self, var297); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on */ +} +if (varonce298) { +var299 = varonce298; +} else { +var300 = "}"; +var301 = 1; +var302 = string__NativeString__to_s_with_length(var300, var301); +var299 = var302; +varonce298 = var299; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var299); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var305 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var305 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var303 = var305; +RET_LABEL304:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var303) on */ +var308 = var303->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var308 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var306 = var308; +RET_LABEL307:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var306) on */ +var311 = var306->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var311 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var309 = var311; +RET_LABEL310:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var309) on */ +var314 = var309->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on */ +if (unlikely(var314 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 65); +show_backtrace(1); +} +var312 = var314; +RET_LABEL313:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var312) on */ +var317 = var312->attrs[COLOR_opts__Option___value].val; /* _value on */ +var315 = var317; +RET_LABEL316:(void)0; +} +} +var318 = ((struct instance_kernel__Bool*)var315)->value; /* autounbox from nullable Object to Bool */; +if (var318){ +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var321 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var321 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var319 = var321; +RET_LABEL320:(void)0; +} +} +var_322 = var319; +{ +{ /* Inline separate_compiler#SeparateCompiler#isset_checks_count (var_322) on */ +var325 = var_322->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on */ +var323 = var325; +RET_LABEL324:(void)0; +} +} +var326 = 1; +{ +{ /* Inline kernel#Int#+ (var323,var326) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var329 = 1; /* easy isa OTHER*/ +if (unlikely(!var329)) { +var_class_name332 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name332); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var333 = var323 + var326; +var327 = var333; +goto RET_LABEL328; +RET_LABEL328:(void)0; +} +} +{ +{ /* Inline separate_compiler#SeparateCompiler#isset_checks_count= (var_322,var327) on */ +var_322->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l = var327; /* _isset_checks_count on */ +RET_LABEL334:(void)0; +} +} +if (varonce335) { +var336 = varonce335; +} else { +var337 = "count_isset_checks++;"; +var338 = 21; +var339 = string__NativeString__to_s_with_length(var337, var338); +var336 = var339; +varonce335 = var336; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var336); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +} +} else { +} +var = var_res201; +goto RET_LABEL; +} +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) { +val* var /* : RuntimeVariable */; +val* var1 /* : RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__read_attribute(self, p0, p1); +var = var1; +RET_LABEL:; +return var; +} +/* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */ +void separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) { +val* var_a /* var a: MAttribute */; +val* var_recv /* var recv: RuntimeVariable */; +val* var_value /* var value: RuntimeVariable */; +val* var /* : MPropDef */; +val* var2 /* : MPropDef */; +val* var3 /* : nullable MType */; +val* var5 /* : nullable MType */; +val* var_mtype /* var mtype: MType */; +val* var6 /* : MPropDef */; +val* var8 /* : MPropDef */; +val* var9 /* : MClassDef */; +val* var11 /* : MClassDef */; +val* var_intromclassdef /* var intromclassdef: MClassDef */; +val* var12 /* : MClassType */; +val* var14 /* : MClassType */; +val* var15 /* : MClassType */; +val* var17 /* : MClassType */; +val* var18 /* : MModule */; +val* var20 /* : MModule */; +short int var21 /* : Bool */; +val* var22 /* : MType */; +val* var23 /* : RuntimeVariable */; +val* var24 /* : String */; +val* var25 /* : AbstractCompiler */; +val* var27 /* : AbstractCompiler */; +val* var28 /* : ModelBuilder */; +val* var30 /* : ModelBuilder */; +val* var31 /* : ToolContext */; +val* var33 /* : ToolContext */; +val* var34 /* : OptionBool */; +val* var36 /* : OptionBool */; +val* var37 /* : nullable Object */; +val* var39 /* : nullable Object */; +short int var40 /* : Bool */; +static val* varonce; +val* var41 /* : String */; +char* var42 /* : NativeString */; +long var43 /* : Int */; +val* var44 /* : FlatString */; +val* var45 /* : String */; +static val* varonce46; +val* var47 /* : String */; +char* var48 /* : NativeString */; +long var49 /* : Int */; +val* var50 /* : FlatString */; +val* var51 /* : Array[Object] */; +long var52 /* : Int */; +val* var53 /* : NativeArray[Object] */; +val* var54 /* : String */; +val* var_attr /* var attr: String */; +val* var55 /* : String */; +static val* varonce56; +val* var57 /* : String */; +char* var58 /* : NativeString */; +long var59 /* : Int */; +val* var60 /* : FlatString */; +short int var61 /* : Bool */; +short int var62 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var64 /* : Bool */; +short int var65 /* : Bool */; +short int var66 /* : Bool */; +short int var67 /* : Bool */; +int cltype; +int idtype; +static val* varonce68; +val* var69 /* : String */; +char* var70 /* : NativeString */; +long var71 /* : Int */; +val* var72 /* : FlatString */; +static val* varonce73; +val* var74 /* : String */; +char* var75 /* : NativeString */; +long var76 /* : Int */; +val* var77 /* : FlatString */; +val* var78 /* : Array[Object] */; +long var79 /* : Int */; +val* var80 /* : NativeArray[Object] */; +val* var81 /* : String */; +static val* varonce82; +val* var83 /* : String */; +char* var84 /* : NativeString */; +long var85 /* : Int */; +val* var86 /* : FlatString */; +val* var87 /* : String */; +static val* varonce88; +val* var89 /* : String */; +char* var90 /* : NativeString */; +long var91 /* : Int */; +val* var92 /* : FlatString */; +static val* varonce93; +val* var94 /* : String */; +char* var95 /* : NativeString */; +long var96 /* : Int */; +val* var97 /* : FlatString */; +static val* varonce98; +val* var99 /* : String */; +char* var100 /* : NativeString */; +long var101 /* : Int */; +val* var102 /* : FlatString */; +static val* varonce103; +val* var104 /* : String */; +char* var105 /* : NativeString */; +long var106 /* : Int */; +val* var107 /* : FlatString */; +val* var108 /* : String */; +static val* varonce109; +val* var110 /* : String */; +char* var111 /* : NativeString */; +long var112 /* : Int */; +val* var113 /* : FlatString */; +val* var114 /* : Array[Object] */; +long var115 /* : Int */; +val* var116 /* : NativeArray[Object] */; +val* var117 /* : String */; +static val* varonce118; +val* var119 /* : String */; +char* var120 /* : NativeString */; +long var121 /* : Int */; +val* var122 /* : FlatString */; +val* var123 /* : MClassType */; +val* var124 /* : MType */; +val* var125 /* : RuntimeVariable */; +static val* varonce126; +val* var127 /* : String */; +char* var128 /* : NativeString */; +long var129 /* : Int */; +val* var130 /* : FlatString */; +static val* varonce131; +val* var132 /* : String */; +char* var133 /* : NativeString */; +long var134 /* : Int */; +val* var135 /* : FlatString */; +static val* varonce136; +val* var137 /* : String */; +char* var138 /* : NativeString */; +long var139 /* : Int */; +val* var140 /* : FlatString */; +val* var141 /* : String */; +static val* varonce142; +val* var143 /* : String */; +char* var144 /* : NativeString */; +long var145 /* : Int */; +val* var146 /* : FlatString */; +val* var147 /* : Array[Object] */; +long var148 /* : Int */; +val* var149 /* : NativeArray[Object] */; +val* var150 /* : String */; +static val* varonce151; +val* var152 /* : String */; +char* var153 /* : NativeString */; +long var154 /* : Int */; +val* var155 /* : FlatString */; +static val* varonce156; +val* var157 /* : String */; +char* var158 /* : NativeString */; +long var159 /* : Int */; +val* var160 /* : FlatString */; +static val* varonce161; +val* var162 /* : String */; +char* var163 /* : NativeString */; +long var164 /* : Int */; +val* var165 /* : FlatString */; +static val* varonce166; +val* var167 /* : String */; +char* var168 /* : NativeString */; +long var169 /* : Int */; +val* var170 /* : FlatString */; +val* var171 /* : String */; +static val* varonce172; +val* var173 /* : String */; +char* var174 /* : NativeString */; +long var175 /* : Int */; +val* var176 /* : FlatString */; +val* var177 /* : Array[Object] */; +long var178 /* : Int */; +val* var179 /* : NativeArray[Object] */; +val* var180 /* : String */; +static val* varonce181; +val* var182 /* : String */; +char* var183 /* : NativeString */; +long var184 /* : Int */; +val* var185 /* : FlatString */; +val* var186 /* : String */; +static val* varonce187; +val* var188 /* : String */; +char* var189 /* : NativeString */; +long var190 /* : Int */; +val* var191 /* : FlatString */; +val* var192 /* : String */; +static val* varonce193; +val* var194 /* : String */; +char* var195 /* : NativeString */; +long var196 /* : Int */; +val* var197 /* : FlatString */; +static val* varonce198; +val* var199 /* : String */; +char* var200 /* : NativeString */; +long var201 /* : Int */; +val* var202 /* : FlatString */; +static val* varonce203; +val* var204 /* : String */; +char* var205 /* : NativeString */; +long var206 /* : Int */; +val* var207 /* : FlatString */; +val* var208 /* : String */; +static val* varonce209; +val* var210 /* : String */; +char* var211 /* : NativeString */; +long var212 /* : Int */; +val* var213 /* : FlatString */; +val* var214 /* : Array[Object] */; +long var215 /* : Int */; +val* var216 /* : NativeArray[Object] */; +val* var217 /* : String */; +var_a = p0; +var_recv = p1; +var_value = p2; +{ +abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on */ +} +{ +{ /* Inline model#MProperty#intro (var_a) on */ +var2 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline model#MAttributeDef#static_mtype (var) on */ +var5 = var->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on */ +var3 = var5; +RET_LABEL4:(void)0; +} +} +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1390); +show_backtrace(1); +} +var_mtype = var3; +{ +{ /* Inline model#MProperty#intro (var_a) on */ +var8 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var6) on */ +var11 = var6->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +var_intromclassdef = var9; +{ +{ /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on */ +var14 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} +{ +{ /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on */ +var17 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495); +show_backtrace(1); +} +var15 = var17; +RET_LABEL16:(void)0; +} +} +{ +{ /* Inline model#MClassDef#mmodule (var_intromclassdef) on */ +var20 = var_intromclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on */ +if (unlikely(var20 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489); +show_backtrace(1); +} +var18 = var20; +RET_LABEL19:(void)0; +} +} +var21 = 1; +{ +var22 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var12, var15, var18, var21) /* resolve_for on */; +} +var_mtype = var22; +{ +var23 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_value, var_mtype); +} +var_value = var23; +{ +var24 = separate_compiler__MProperty__const_color(var_a); +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var24); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var27 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var25 = var27; +RET_LABEL26:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var25) on */ +var30 = var25->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var28 = var30; +RET_LABEL29:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var28) on */ +var33 = var28->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var33 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var31 = var33; +RET_LABEL32:(void)0; +} +} +{ +{ /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var31) on */ +var36 = var31->attrs[COLOR_separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on */ +if (unlikely(var36 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 28); +show_backtrace(1); +} +var34 = var36; +RET_LABEL35:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var34) on */ +var39 = var34->attrs[COLOR_opts__Option___value].val; /* _value on */ +var37 = var39; +RET_LABEL38:(void)0; +} +} +var40 = ((struct instance_kernel__Bool*)var37)->value; /* autounbox from nullable Object to Bool */; +if (var40){ +if (varonce) { +var41 = varonce; +} else { +var42 = "->attrs["; +var43 = 8; +var44 = string__NativeString__to_s_with_length(var42, var43); +var41 = var44; +varonce = var41; +} +{ +var45 = separate_compiler__MProperty__const_color(var_a); +} +if (varonce46) { +var47 = varonce46; +} else { +var48 = "]"; +var49 = 1; +var50 = string__NativeString__to_s_with_length(var48, var49); +var47 = var50; +varonce46 = var47; +} +var51 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var51 = array_instance Array[Object] */ +var52 = 4; +var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var53)->values[0] = (val*) var_recv; +((struct instance_array__NativeArray*)var53)->values[1] = (val*) var41; +((struct instance_array__NativeArray*)var53)->values[2] = (val*) var45; +((struct instance_array__NativeArray*)var53)->values[3] = (val*) var47; +{ +((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on */; +} +} +{ +var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on */; +} +var_attr = var54; +{ +var55 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on */; +} +if (varonce56) { +var57 = varonce56; +} else { +var58 = "val*"; +var59 = 4; +var60 = string__NativeString__to_s_with_length(var58, var59); +var57 = var60; +varonce56 = var57; +} +{ +{ /* Inline kernel#Object#!= (var55,var57) on */ +var_other = var57; +{ +var65 = ((short int (*)(val*, val*))(var55->class->vft[COLOR_kernel__Object___61d_61d]))(var55, var_other) /* == on */; +var64 = var65; +} +var66 = !var64; +var62 = var66; +goto RET_LABEL63; +RET_LABEL63:(void)0; +} +var61 = var62; +} +if (var61){ +/* isa MClassType */ +cltype = type_model__MClassType.color; +idtype = type_model__MClassType.id; +if(cltype >= var_mtype->type->table_size) { +var67 = 0; +} else { +var67 = var_mtype->type->type_table[cltype] == idtype; +} +if (unlikely(!var67)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1401); +show_backtrace(1); +} +if (varonce68) { +var69 = varonce68; +} else { +var70 = "if ("; +var71 = 4; +var72 = string__NativeString__to_s_with_length(var70, var71); +var69 = var72; +varonce68 = var69; +} +if (varonce73) { +var74 = varonce73; +} else { +var75 = " != NULL) {"; +var76 = 11; +var77 = string__NativeString__to_s_with_length(var75, var76); +var74 = var77; +varonce73 = var74; +} +var78 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var78 = array_instance Array[Object] */ +var79 = 3; +var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var80)->values[0] = (val*) var69; +((struct instance_array__NativeArray*)var80)->values[1] = (val*) var_attr; +((struct instance_array__NativeArray*)var80)->values[2] = (val*) var74; +{ +((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on */; +} +} +{ +var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var81); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce82) { +var83 = varonce82; +} else { +var84 = "((struct instance_"; +var85 = 18; +var86 = string__NativeString__to_s_with_length(var84, var85); +var83 = var86; +varonce82 = var83; +} +{ +var87 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on */; +} +if (varonce88) { +var89 = varonce88; +} else { +var90 = "*)"; +var91 = 2; +var92 = string__NativeString__to_s_with_length(var90, var91); +var89 = var92; +varonce88 = var89; +} +if (varonce93) { +var94 = varonce93; +} else { +var95 = ")->value = "; +var96 = 11; +var97 = string__NativeString__to_s_with_length(var95, var96); +var94 = var97; +varonce93 = var94; +} +if (varonce98) { +var99 = varonce98; +} else { +var100 = "; /* "; +var101 = 5; +var102 = string__NativeString__to_s_with_length(var100, var101); +var99 = var102; +varonce98 = var99; +} +if (varonce103) { +var104 = varonce103; +} else { +var105 = " on "; +var106 = 4; +var107 = string__NativeString__to_s_with_length(var105, var106); +var104 = var107; +varonce103 = var104; +} +{ +var108 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce109) { +var110 = varonce109; +} else { +var111 = " */"; +var112 = 3; +var113 = string__NativeString__to_s_with_length(var111, var112); +var110 = var113; +varonce109 = var110; +} +var114 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var114 = array_instance Array[Object] */ +var115 = 11; +var116 = NEW_array__NativeArray(var115, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var116)->values[0] = (val*) var83; +((struct instance_array__NativeArray*)var116)->values[1] = (val*) var87; +((struct instance_array__NativeArray*)var116)->values[2] = (val*) var89; +((struct instance_array__NativeArray*)var116)->values[3] = (val*) var_attr; +((struct instance_array__NativeArray*)var116)->values[4] = (val*) var94; +((struct instance_array__NativeArray*)var116)->values[5] = (val*) var_value; +((struct instance_array__NativeArray*)var116)->values[6] = (val*) var99; +((struct instance_array__NativeArray*)var116)->values[7] = (val*) var_a; +((struct instance_array__NativeArray*)var116)->values[8] = (val*) var104; +((struct instance_array__NativeArray*)var116)->values[9] = (val*) var108; +((struct instance_array__NativeArray*)var116)->values[10] = (val*) var110; +{ +((void (*)(val*, val*, long))(var114->class->vft[COLOR_array__Array__with_native]))(var114, var116, var115) /* with_native on */; +} +} +{ +var117 = ((val* (*)(val*))(var114->class->vft[COLOR_string__Object__to_s]))(var114) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var117); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce118) { +var119 = varonce118; +} else { +var120 = "} else {"; +var121 = 8; +var122 = string__NativeString__to_s_with_length(var120, var121); +var119 = var122; +varonce118 = var119; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var119); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +{ +var123 = abstract_compiler__AbstractCompilerVisitor__object_type(self); +} +{ +var124 = model__MType__as_nullable(var123); +} +{ +var125 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_value, var124); +} +var_value = var125; +if (varonce126) { +var127 = varonce126; +} else { +var128 = " = "; +var129 = 3; +var130 = string__NativeString__to_s_with_length(var128, var129); +var127 = var130; +varonce126 = var127; +} +if (varonce131) { +var132 = varonce131; +} else { +var133 = "; /* "; +var134 = 5; +var135 = string__NativeString__to_s_with_length(var133, var134); +var132 = var135; +varonce131 = var132; +} +if (varonce136) { +var137 = varonce136; +} else { +var138 = " on "; +var139 = 4; +var140 = string__NativeString__to_s_with_length(var138, var139); +var137 = var140; +varonce136 = var137; +} +{ +var141 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce142) { +var143 = varonce142; +} else { +var144 = " */"; +var145 = 3; +var146 = string__NativeString__to_s_with_length(var144, var145); +var143 = var146; +varonce142 = var143; +} +var147 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var147 = array_instance Array[Object] */ +var148 = 8; +var149 = NEW_array__NativeArray(var148, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var149)->values[0] = (val*) var_attr; +((struct instance_array__NativeArray*)var149)->values[1] = (val*) var127; +((struct instance_array__NativeArray*)var149)->values[2] = (val*) var_value; +((struct instance_array__NativeArray*)var149)->values[3] = (val*) var132; +((struct instance_array__NativeArray*)var149)->values[4] = (val*) var_a; +((struct instance_array__NativeArray*)var149)->values[5] = (val*) var137; +((struct instance_array__NativeArray*)var149)->values[6] = (val*) var141; +((struct instance_array__NativeArray*)var149)->values[7] = (val*) var143; +{ +((void (*)(val*, val*, long))(var147->class->vft[COLOR_array__Array__with_native]))(var147, var149, var148) /* with_native on */; +} +} +{ +var150 = ((val* (*)(val*))(var147->class->vft[COLOR_string__Object__to_s]))(var147) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var150); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce151) { +var152 = varonce151; +} else { +var153 = "}"; +var154 = 1; +var155 = string__NativeString__to_s_with_length(var153, var154); +var152 = var155; +varonce151 = var152; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var152); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} else { +if (varonce156) { +var157 = varonce156; +} else { +var158 = " = "; +var159 = 3; +var160 = string__NativeString__to_s_with_length(var158, var159); +var157 = var160; +varonce156 = var157; +} +if (varonce161) { +var162 = varonce161; +} else { +var163 = "; /* "; +var164 = 5; +var165 = string__NativeString__to_s_with_length(var163, var164); +var162 = var165; +varonce161 = var162; +} +if (varonce166) { +var167 = varonce166; +} else { +var168 = " on "; +var169 = 4; +var170 = string__NativeString__to_s_with_length(var168, var169); +var167 = var170; +varonce166 = var167; +} +{ +var171 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce172) { +var173 = varonce172; +} else { +var174 = " */"; +var175 = 3; +var176 = string__NativeString__to_s_with_length(var174, var175); +var173 = var176; +varonce172 = var173; +} +var177 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var177 = array_instance Array[Object] */ +var178 = 8; +var179 = NEW_array__NativeArray(var178, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var179)->values[0] = (val*) var_attr; +((struct instance_array__NativeArray*)var179)->values[1] = (val*) var157; +((struct instance_array__NativeArray*)var179)->values[2] = (val*) var_value; +((struct instance_array__NativeArray*)var179)->values[3] = (val*) var162; +((struct instance_array__NativeArray*)var179)->values[4] = (val*) var_a; +((struct instance_array__NativeArray*)var179)->values[5] = (val*) var167; +((struct instance_array__NativeArray*)var179)->values[6] = (val*) var171; +((struct instance_array__NativeArray*)var179)->values[7] = (val*) var173; +{ +((void (*)(val*, val*, long))(var177->class->vft[COLOR_array__Array__with_native]))(var177, var179, var178) /* with_native on */; +} +} +{ +var180 = ((val* (*)(val*))(var177->class->vft[COLOR_string__Object__to_s]))(var177) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var180); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +} else { +if (varonce181) { +var182 = varonce181; +} else { +var183 = "->attrs["; +var184 = 8; +var185 = string__NativeString__to_s_with_length(var183, var184); +var182 = var185; +varonce181 = var182; +} +{ +var186 = separate_compiler__MProperty__const_color(var_a); +} +if (varonce187) { +var188 = varonce187; +} else { +var189 = "]."; +var190 = 2; +var191 = string__NativeString__to_s_with_length(var189, var190); +var188 = var191; +varonce187 = var188; +} +{ +var192 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_mtype) /* ctypename on */; +} +if (varonce193) { +var194 = varonce193; +} else { +var195 = " = "; +var196 = 3; +var197 = string__NativeString__to_s_with_length(var195, var196); +var194 = var197; +varonce193 = var194; +} +if (varonce198) { +var199 = varonce198; +} else { +var200 = "; /* "; +var201 = 5; +var202 = string__NativeString__to_s_with_length(var200, var201); +var199 = var202; +varonce198 = var199; +} +if (varonce203) { +var204 = varonce203; +} else { +var205 = " on "; +var206 = 4; +var207 = string__NativeString__to_s_with_length(var205, var206); +var204 = var207; +varonce203 = var204; +} +{ +var208 = abstract_compiler__RuntimeVariable__inspect(var_recv); +} +if (varonce209) { +var210 = varonce209; +} else { +var211 = " */"; +var212 = 3; +var213 = string__NativeString__to_s_with_length(var211, var212); +var210 = var213; +varonce209 = var210; +} +var214 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var214 = array_instance Array[Object] */ +var215 = 12; +var216 = NEW_array__NativeArray(var215, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var216)->values[0] = (val*) var_recv; +((struct instance_array__NativeArray*)var216)->values[1] = (val*) var182; +((struct instance_array__NativeArray*)var216)->values[2] = (val*) var186; +((struct instance_array__NativeArray*)var216)->values[3] = (val*) var188; +((struct instance_array__NativeArray*)var216)->values[4] = (val*) var192; +((struct instance_array__NativeArray*)var216)->values[5] = (val*) var194; +((struct instance_array__NativeArray*)var216)->values[6] = (val*) var_value; +((struct instance_array__NativeArray*)var216)->values[7] = (val*) var199; +((struct instance_array__NativeArray*)var216)->values[8] = (val*) var_a; +((struct instance_array__NativeArray*)var216)->values[9] = (val*) var204; +((struct instance_array__NativeArray*)var216)->values[10] = (val*) var208; +((struct instance_array__NativeArray*)var216)->values[11] = (val*) var210; +{ +((void (*)(val*, val*, long))(var214->class->vft[COLOR_array__Array__with_native]))(var214, var216, var215) /* with_native on */; +} +} +{ +var217 = ((val* (*)(val*))(var214->class->vft[COLOR_string__Object__to_s]))(var214) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var217); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +} +RET_LABEL:; +} +/* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: Object, MAttribute, RuntimeVariable, RuntimeVariable) */ +void VIRTUAL_separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) { +separate_compiler__SeparateCompilerVisitor__write_attribute(self, p0, p1, p2); /* Direct call separate_compiler#SeparateCompilerVisitor#write_attribute on */ +RET_LABEL:; +} +/* method separate_compiler#SeparateCompilerVisitor#hardening_live_open_type for (self: SeparateCompilerVisitor, MType) */ +void separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(val* self, val* p0) { +val* var_mtype /* var mtype: MType */; +val* var /* : AbstractCompiler */; +val* var2 /* : AbstractCompiler */; +val* var3 /* : ModelBuilder */; +val* var5 /* : ModelBuilder */; +val* var6 /* : ToolContext */; +val* var8 /* : ToolContext */; +val* var9 /* : OptionBool */; +val* var11 /* : OptionBool */; +val* var12 /* : nullable Object */; +val* var14 /* : nullable Object */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +val* var17 /* : String */; +val* var18 /* : String */; +val* var_col /* var col: String */; +static val* varonce; +val* var19 /* : String */; +char* var20 /* : NativeString */; +long var21 /* : Int */; +val* var22 /* : FlatString */; +static val* varonce23; +val* var24 /* : String */; +char* var25 /* : NativeString */; +long var26 /* : Int */; +val* var27 /* : FlatString */; +val* var28 /* : Array[Object] */; +long var29 /* : Int */; +val* var30 /* : NativeArray[Object] */; +val* var31 /* : String */; +static val* varonce32; +val* var33 /* : String */; +char* var34 /* : NativeString */; +long var35 /* : Int */; +val* var36 /* : FlatString */; +val* var37 /* : String */; +val* var38 /* : String */; +static val* varonce39; +val* var40 /* : String */; +char* var41 /* : NativeString */; +long var42 /* : Int */; +val* var43 /* : FlatString */; +val* var44 /* : Array[Object] */; +long var45 /* : Int */; +val* var46 /* : NativeArray[Object] */; +val* var47 /* : String */; +static val* varonce48; +val* var49 /* : String */; +char* var50 /* : NativeString */; +long var51 /* : Int */; +val* var52 /* : FlatString */; +static val* varonce53; +val* var54 /* : String */; +char* var55 /* : NativeString */; +long var56 /* : Int */; +val* var57 /* : FlatString */; +var_mtype = p0; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var) on */ +var5 = var->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var3) on */ +var8 = var3->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_hardening (var6) on */ +var11 = var6->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 47); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; +} +} +{ +{ /* Inline opts#Option#value (var9) on */ +var14 = var9->attrs[COLOR_opts__Option___value].val; /* _value on */ +var12 = var14; +RET_LABEL13:(void)0; +} +} +var15 = ((struct instance_kernel__Bool*)var12)->value; /* autounbox from nullable Object to Bool */; +var16 = !var15; +if (var16){ +goto RET_LABEL; +} else { +} +{ +var17 = separate_compiler__MType__const_color(var_mtype); +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var17); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +{ +var18 = separate_compiler__MType__const_color(var_mtype); +} +var_col = var18; +if (varonce) { +var19 = varonce; +} else { +var20 = "if("; +var21 = 3; +var22 = string__NativeString__to_s_with_length(var20, var21); +var19 = var22; +varonce = var19; +} +if (varonce23) { +var24 = varonce23; +} else { +var25 = " == -1) {"; +var26 = 9; +var27 = string__NativeString__to_s_with_length(var25, var26); +var24 = var27; +varonce23 = var24; +} +var28 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var28 = array_instance Array[Object] */ +var29 = 3; +var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var30)->values[0] = (val*) var19; +((struct instance_array__NativeArray*)var30)->values[1] = (val*) var_col; +((struct instance_array__NativeArray*)var30)->values[2] = (val*) var24; +{ +((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on */; +} +} +{ +var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce32) { +var33 = varonce32; +} else { +var34 = "PRINT_ERROR(\"Resolution of a dead open type: %s\\n\", \""; +var35 = 53; +var36 = string__NativeString__to_s_with_length(var34, var35); +var33 = var36; +varonce32 = var33; +} +{ +var37 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on */; +} +{ +var38 = string__Text__escape_to_c(var37); +} +if (varonce39) { +var40 = varonce39; +} else { +var41 = "\");"; +var42 = 3; +var43 = string__NativeString__to_s_with_length(var41, var42); +var40 = var43; +varonce39 = var40; +} +var44 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var44 = array_instance Array[Object] */ +var45 = 3; +var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var46)->values[0] = (val*) var33; +((struct instance_array__NativeArray*)var46)->values[1] = (val*) var38; +((struct instance_array__NativeArray*)var46)->values[2] = (val*) var40; +{ +((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on */; +} +} +{ +var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var47); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +if (varonce48) { +var49 = varonce48; +} else { +var50 = "open type dead"; +var51 = 14; +var52 = string__NativeString__to_s_with_length(var50, var51); +var49 = var52; +varonce48 = var49; +} +{ +abstract_compiler__AbstractCompilerVisitor__add_abort(self, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on */ +} +if (varonce53) { +var54 = varonce53; +} else { +var55 = "}"; +var56 = 1; +var57 = string__NativeString__to_s_with_length(var55, var56); +var54 = var57; +varonce53 = var54; +} +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var54); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ +} +RET_LABEL:; +} +/* method separate_compiler#SeparateCompilerVisitor#hardening_live_open_type for (self: Object, MType) */ +void VIRTUAL_separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(val* self, val* p0) { +separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(self, p0); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_live_open_type on */ +RET_LABEL:; +} +/* method separate_compiler#SeparateCompilerVisitor#hardening_cast_type for (self: SeparateCompilerVisitor, String) */ +void separate_compiler__SeparateCompilerVisitor__hardening_cast_type(val* self, val* p0) { +val* var_t /* var t: String */; +val* var /* : AbstractCompiler */; +val* var2 /* : AbstractCompiler */; +val* var3 /* : ModelBuilder */; +val* var5 /* : ModelBuilder */; +val* var6 /* : ToolContext */; +val* var8 /* : ToolContext */; +val* var9 /* : OptionBool */; +val* var11 /* : OptionBool */; +val* var12 /* : nullable Object */; +val* var14 /* : nullable Object */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +static val* varonce; +val* var17 /* : String */; +char* var18 /* : NativeString */; +long var19 /* : Int */; +val* var20 /* : FlatString */; +static val* varonce21; +val* var22 /* : String */; +char* var23 /* : NativeString */; +long var24 /* : Int */; +val* var25 /* : FlatString */; +val* var26 /* : Array[Object] */; +long var27 /* : Int */; +val* var28 /* : NativeArray[Object] */; +val* var29 /* : String */; +static val* varonce30; +val* var31 /* : String */; +char* var32 /* : NativeString */; +long var33 /* : Int */; +val* var34 /* : FlatString */; +static val* varonce35; +val* var36 /* : String */; +char* var37 /* : NativeString */; +long var38 /* : Int */; +val* var39 /* : FlatString */; +static val* varonce40; +val* var41 /* : String */; +char* var42 /* : NativeString */; +long var43 /* : Int */; +val* var44 /* : FlatString */; +static val* varonce45; +val* var46 /* : String */; +char* var47 /* : NativeString */; +long var48 /* : Int */; +val* var49 /* : FlatString */; +static val* varonce50; +val* var51 /* : String */; +char* var52 /* : NativeString */; +long var53 /* : Int */; +val* var54 /* : FlatString */; +val* var55 /* : Array[Object] */; +long var56 /* : Int */; +val* var57 /* : NativeArray[Object] */; +val* var58 /* : String */; +static val* varonce59; +val* var60 /* : String */; +char* var61 /* : NativeString */; +long var62 /* : Int */; +val* var63 /* : FlatString */; +static val* varonce64; +val* var65 /* : String */; +char* var66 /* : NativeString */; +long var67 /* : Int */; +val* var68 /* : FlatString */; +val* var69 /* : Array[Object] */; +long var70 /* : Int */; +val* var71 /* : NativeArray[Object] */; +val* var72 /* : String */; +static val* varonce73; +val* var74 /* : String */; +char* var75 /* : NativeString */; +long var76 /* : Int */; +val* var77 /* : FlatString */; +static val* varonce78; +val* var79 /* : String */; +char* var80 /* : NativeString */; +long var81 /* : Int */; +val* var82 /* : FlatString */; +var_t = p0; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var) on */ +var5 = var->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470); +show_backtrace(1); +} +var3 = var5; +RET_LABEL4:(void)0; +} +} +{ +{ /* Inline modelbuilder#ModelBuilder#toolcontext (var3) on */ +var8 = var3->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106); +show_backtrace(1); +} +var6 = var8; +RET_LABEL7:(void)0; +} +} +{ +{ /* Inline abstract_compiler#ToolContext#opt_hardening (var6) on */ +var11 = var6->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 47); +show_backtrace(1); +} +var9 = var11; +RET_LABEL10:(void)0; } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var147) /* add on */; -var151 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -((void (*)(val*, val*, val*, val*))(var137->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var137, var151, var_mtype, var_mtype) /* init on */; -var_argvar = var137; -((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__next]))(var91) /* next on */; } -BREAK_label: (void)0; -if (varonce152) { -var153 = varonce152; -} else { -var154 = ")"; -var155 = 1; -var156 = string__NativeString__to_s_with_length(var154, var155); -var153 = var156; -varonce152 = var153; +{ +{ /* Inline opts#Option#value (var9) on */ +var14 = var9->attrs[COLOR_opts__Option___value].val; /* _value on */ +var12 = var14; +RET_LABEL13:(void)0; } -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var153) /* append on */; -if (varonce157) { -var158 = varonce157; +} +var15 = ((struct instance_kernel__Bool*)var12)->value; /* autounbox from nullable Object to Bool */; +var16 = !var15; +if (var16){ +goto RET_LABEL; } else { -var159 = ")"; -var160 = 1; -var161 = string__NativeString__to_s_with_length(var159, var160); -var158 = var161; -varonce157 = var158; } -((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var158) /* append on */; -var162 = NULL; -if (var_ret == NULL) { -var163 = 0; /* is null */ +if (varonce) { +var17 = varonce; } else { -var163 = 1; /* arg is null and recv is not */ +var18 = "if("; +var19 = 3; +var20 = string__NativeString__to_s_with_length(var18, var19); +var17 = var20; +varonce = var17; } -if (var163){ -if (varonce164) { -var165 = varonce164; +if (varonce21) { +var22 = varonce21; } else { -var166 = ": "; -var167 = 2; -var168 = string__NativeString__to_s_with_length(var166, var167); -var165 = var168; -varonce164 = var165; +var23 = " == NULL) {"; +var24 = 11; +var25 = string__NativeString__to_s_with_length(var23, var24); +var22 = var25; +varonce21 = var22; } -var169 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var169 = array_instance Array[Object] */ -var170 = 2; -var171 = NEW_array__NativeArray(var170, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var171)->values[0] = (val*) var165; -((struct instance_array__NativeArray*)var171)->values[1] = (val*) var_ret; -((void (*)(val*, val*, long))(var169->class->vft[COLOR_array__Array__with_native]))(var169, var171, var170) /* with_native on */; +var26 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var26 = array_instance Array[Object] */ +var27 = 3; +var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17; +((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_t; +((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22; +{ +((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on */; } -var172 = ((val* (*)(val*))(var169->class->vft[COLOR_string__Object__to_s]))(var169) /* to_s on */; -((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var172) /* append on */; -} else { } -var173 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on */; -if (varonce174) { -var175 = varonce174; -} else { -var176 = ";"; -var177 = 1; -var178 = string__NativeString__to_s_with_length(var176, var177); -var175 = var178; -varonce174 = var175; +{ +var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on */; } -var179 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var179 = array_instance Array[Object] */ -var180 = 2; -var181 = NEW_array__NativeArray(var180, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var181)->values[0] = (val*) var_sig; -((struct instance_array__NativeArray*)var181)->values[1] = (val*) var175; -((void (*)(val*, val*, long))(var179->class->vft[COLOR_array__Array__with_native]))(var179, var181, var180) /* with_native on */; -} -var182 = ((val* (*)(val*))(var179->class->vft[COLOR_string__Object__to_s]))(var179) /* to_s on */; -((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var173, var182) /* provide_declaration on */; -if (varonce183) { -var184 = varonce183; -} else { -var185 = "/* method "; -var186 = 10; -var187 = string__NativeString__to_s_with_length(var185, var186); -var184 = var187; -varonce183 = var184; -} -if (varonce188) { -var189 = varonce188; -} else { -var190 = " for "; -var191 = 5; -var192 = string__NativeString__to_s_with_length(var190, var191); -var189 = var192; -varonce188 = var189; +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var29); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ } -if (varonce193) { -var194 = varonce193; +if (varonce30) { +var31 = varonce30; } else { -var195 = " */"; -var196 = 3; -var197 = string__NativeString__to_s_with_length(var195, var196); -var194 = var197; -varonce193 = var194; +var32 = "cast type null"; +var33 = 14; +var34 = string__NativeString__to_s_with_length(var32, var33); +var31 = var34; +varonce30 = var31; } -var198 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var198 = array_instance Array[Object] */ -var199 = 5; -var200 = NEW_array__NativeArray(var199, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var200)->values[0] = (val*) var184; -((struct instance_array__NativeArray*)var200)->values[1] = (val*) self; -((struct instance_array__NativeArray*)var200)->values[2] = (val*) var189; -((struct instance_array__NativeArray*)var200)->values[3] = (val*) var_comment; -((struct instance_array__NativeArray*)var200)->values[4] = (val*) var194; -((void (*)(val*, val*, long))(var198->class->vft[COLOR_array__Array__with_native]))(var198, var200, var199) /* with_native on */; -} -var201 = ((val* (*)(val*))(var198->class->vft[COLOR_string__Object__to_s]))(var198) /* to_s on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var201) /* add_decl on */; -if (varonce202) { -var203 = varonce202; -} else { -var204 = " {"; -var205 = 2; -var206 = string__NativeString__to_s_with_length(var204, var205); -var203 = var206; -varonce202 = var203; +{ +abstract_compiler__AbstractCompilerVisitor__add_abort(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on */ } -var207 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var207 = array_instance Array[Object] */ -var208 = 2; -var209 = NEW_array__NativeArray(var208, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var209)->values[0] = (val*) var_sig; -((struct instance_array__NativeArray*)var209)->values[1] = (val*) var203; -((void (*)(val*, val*, long))(var207->class->vft[COLOR_array__Array__with_native]))(var207, var209, var208) /* with_native on */; -} -var210 = ((val* (*)(val*))(var207->class->vft[COLOR_string__Object__to_s]))(var207) /* to_s on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var210) /* add_decl on */; -var211 = NULL; -if (var_ret == NULL) { -var212 = 0; /* is null */ +if (varonce35) { +var36 = varonce35; } else { -var212 = 1; /* arg is null and recv is not */ +var37 = "}"; +var38 = 1; +var39 = string__NativeString__to_s_with_length(var37, var38); +var36 = var39; +varonce35 = var36; } -if (var212){ -var213 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on */; -((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var213) /* returnvar= on */; -} else { +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var36); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ } -if (varonce214) { -var215 = varonce214; +if (varonce40) { +var41 = varonce40; } else { -var216 = "RET_LABEL"; -var217 = 9; -var218 = string__NativeString__to_s_with_length(var216, var217); -var215 = var218; -varonce214 = var215; +var42 = "if("; +var43 = 3; +var44 = string__NativeString__to_s_with_length(var42, var43); +var41 = var44; +varonce40 = var41; } -var219 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var215) /* get_name on */; -((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var219) /* returnlabel= on */; -var220 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on */; -var221 = ((val* (*)(val*))(var220->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var220) /* mtype on */; -var222 = ((short int (*)(val*, val*))(var_recv->class->vft[COLOR_kernel__Object___33d_61d]))(var_recv, var221) /* != on */; -if (var222){ -} else { -} -var223 = ((val* (*)(val*, val*, val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MMethodDef__compile_inside_to_c]))(var_mmethoddef, var_v, var_arguments) /* compile_inside_to_c on */; -var223; -var224 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on */; -if (var224 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1742); -show_backtrace(1); -} -if (varonce225) { -var226 = varonce225; -} else { -var227 = ":;"; -var228 = 2; -var229 = string__NativeString__to_s_with_length(var227, var228); -var226 = var229; -varonce225 = var226; -} -var230 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var230 = array_instance Array[Object] */ -var231 = 2; -var232 = NEW_array__NativeArray(var231, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var232)->values[0] = (val*) var224; -((struct instance_array__NativeArray*)var232)->values[1] = (val*) var226; -((void (*)(val*, val*, long))(var230->class->vft[COLOR_array__Array__with_native]))(var230, var232, var231) /* with_native on */; -} -var233 = ((val* (*)(val*))(var230->class->vft[COLOR_string__Object__to_s]))(var230) /* to_s on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var233) /* add on */; -var234 = NULL; -if (var_ret == NULL) { -var235 = 0; /* is null */ +if (varonce45) { +var46 = varonce45; } else { -var235 = 1; /* arg is null and recv is not */ +var47 = "->id == -1 || "; +var48 = 14; +var49 = string__NativeString__to_s_with_length(var47, var48); +var46 = var49; +varonce45 = var46; } -if (var235){ -if (varonce236) { -var237 = varonce236; +if (varonce50) { +var51 = varonce50; } else { -var238 = "return "; -var239 = 7; -var240 = string__NativeString__to_s_with_length(var238, var239); -var237 = var240; -varonce236 = var237; +var52 = "->color == -1) {"; +var53 = 16; +var54 = string__NativeString__to_s_with_length(var52, var53); +var51 = var54; +varonce50 = var51; } -var241 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on */; -if (var241 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1744); -show_backtrace(1); +var55 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var55 = array_instance Array[Object] */ +var56 = 5; +var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var57)->values[0] = (val*) var41; +((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_t; +((struct instance_array__NativeArray*)var57)->values[2] = (val*) var46; +((struct instance_array__NativeArray*)var57)->values[3] = (val*) var_t; +((struct instance_array__NativeArray*)var57)->values[4] = (val*) var51; +{ +((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on */; } -if (varonce242) { -var243 = varonce242; -} else { -var244 = ";"; -var245 = 1; -var246 = string__NativeString__to_s_with_length(var244, var245); -var243 = var246; -varonce242 = var243; } -var247 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var247 = array_instance Array[Object] */ -var248 = 3; -var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var249)->values[0] = (val*) var237; -((struct instance_array__NativeArray*)var249)->values[1] = (val*) var241; -((struct instance_array__NativeArray*)var249)->values[2] = (val*) var243; -((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on */; +{ +var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on */; } -var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var250) /* add on */; -} else { +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var58); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ } -if (varonce251) { -var252 = varonce251; +if (varonce59) { +var60 = varonce59; } else { -var253 = "}"; -var254 = 1; -var255 = string__NativeString__to_s_with_length(var253, var254); -var252 = var255; -varonce251 = var252; +var61 = "PRINT_ERROR(\"Try to cast on a dead cast type: %s\\n\", "; +var62 = 53; +var63 = string__NativeString__to_s_with_length(var61, var62); +var60 = var63; +varonce59 = var60; } -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var252) /* add on */; -var256 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on */; -if (varonce257) { -var258 = varonce257; +if (varonce64) { +var65 = varonce64; } else { -var259 = "VIRTUAL"; -var260 = 7; -var261 = string__NativeString__to_s_with_length(var259, var260); -var258 = var261; -varonce257 = var258; +var66 = "->name);"; +var67 = 8; +var68 = string__NativeString__to_s_with_length(var66, var67); +var65 = var68; +varonce64 = var65; } -var262 = 0; -var263 = ((short int (*)(val*, val*, long))(var256->class->vft[COLOR_string__AbstractString__has_substring]))(var256, var258, var262) /* has_substring on */; -var264 = !var263; -if (var264){ -var265 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(var_compiler) /* names on */; -var266 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on */; -var267 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var268 = ((val* (*)(val*))(var267->class->vft[COLOR_model__MClassDef__mmodule]))(var267) /* mmodule on */; -var269 = ((val* (*)(val*))(var268->class->vft[COLOR_mmodule__MModule__name]))(var268) /* name on */; -if (varonce270) { -var271 = varonce270; -} else { -var272 = "::"; -var273 = 2; -var274 = string__NativeString__to_s_with_length(var272, var273); -var271 = var274; -varonce270 = var271; -} -var275 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var276 = ((val* (*)(val*))(var275->class->vft[COLOR_model__MClassDef__mclass]))(var275) /* mclass on */; -var277 = ((val* (*)(val*))(var276->class->vft[COLOR_model__MClass__name]))(var276) /* name on */; -if (varonce278) { -var279 = varonce278; -} else { -var280 = "::"; -var281 = 2; -var282 = string__NativeString__to_s_with_length(var280, var281); -var279 = var282; -varonce278 = var279; +var69 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var69 = array_instance Array[Object] */ +var70 = 3; +var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var71)->values[0] = (val*) var60; +((struct instance_array__NativeArray*)var71)->values[1] = (val*) var_t; +((struct instance_array__NativeArray*)var71)->values[2] = (val*) var65; +{ +((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on */; } -var283 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on */; -var284 = ((val* (*)(val*))(var283->class->vft[COLOR_model__MProperty__name]))(var283) /* name on */; -if (varonce285) { -var286 = varonce285; -} else { -var287 = " ("; -var288 = 2; -var289 = string__NativeString__to_s_with_length(var287, var288); -var286 = var289; -varonce285 = var286; } -var290 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on */; -var291 = ((val* (*)(val*))(var290->class->vft[COLOR_location__Location__file]))(var290) /* file on */; -if (var291 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1747); -show_backtrace(1); -} else { -var292 = ((val* (*)(val*))(var291->class->vft[COLOR_location__SourceFile__filename]))(var291) /* filename on */; +{ +var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on */; } -if (varonce293) { -var294 = varonce293; -} else { -var295 = ":"; -var296 = 1; -var297 = string__NativeString__to_s_with_length(var295, var296); -var294 = var297; -varonce293 = var294; +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var72); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ } -var298 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on */; -var299 = ((long (*)(val*))(var298->class->vft[COLOR_location__Location__line_start]))(var298) /* line_start on */; -if (varonce300) { -var301 = varonce300; -} else { -var302 = ")"; -var303 = 1; -var304 = string__NativeString__to_s_with_length(var302, var303); -var301 = var304; -varonce300 = var301; -} -var305 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var305 = array_instance Array[Object] */ -var306 = 10; -var307 = NEW_array__NativeArray(var306, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var307)->values[0] = (val*) var269; -((struct instance_array__NativeArray*)var307)->values[1] = (val*) var271; -((struct instance_array__NativeArray*)var307)->values[2] = (val*) var277; -((struct instance_array__NativeArray*)var307)->values[3] = (val*) var279; -((struct instance_array__NativeArray*)var307)->values[4] = (val*) var284; -((struct instance_array__NativeArray*)var307)->values[5] = (val*) var286; -((struct instance_array__NativeArray*)var307)->values[6] = (val*) var292; -((struct instance_array__NativeArray*)var307)->values[7] = (val*) var294; -var308 = BOX_kernel__Int(var299); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var307)->values[8] = (val*) var308; -((struct instance_array__NativeArray*)var307)->values[9] = (val*) var301; -((void (*)(val*, val*, long))(var305->class->vft[COLOR_array__Array__with_native]))(var305, var307, var306) /* with_native on */; -} -var309 = ((val* (*)(val*))(var305->class->vft[COLOR_string__Object__to_s]))(var305) /* to_s on */; -((void (*)(val*, val*, val*))(var265->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var265, var266, var309) /* []= on */; +if (varonce73) { +var74 = varonce73; } else { +var75 = "cast type dead"; +var76 = 14; +var77 = string__NativeString__to_s_with_length(var75, var76); +var74 = var77; +varonce73 = var74; } -RET_LABEL:; +{ +abstract_compiler__AbstractCompilerVisitor__add_abort(self, var74); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on */ } -/* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */ -void VIRTUAL_separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) { -separate_compiler__SeparateRuntimeFunction__compile_to_c(self, p0); -RET_LABEL:; +if (varonce78) { +var79 = varonce78; +} else { +var80 = "}"; +var81 = 1; +var82 = string__NativeString__to_s_with_length(var80, var81); +var79 = var82; +varonce78 = var79; } -/* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: VirtualRuntimeFunction): String */ -val* separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) { -val* var /* : String */; -val* var1 /* : Array[Object] */; -long var2 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; -val* var7 /* : MMethodDef */; -val* var8 /* : String */; -static val* varonce9; -val* var10 /* : String */; -char* var11 /* : NativeString */; -long var12 /* : Int */; -val* var13 /* : String */; -val* var14 /* : String */; -var1 = NEW_array__Array(&type_array__Arraykernel__Object); -var2 = 3; -((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on */; -var_ = var1; -if (varonce) { -var3 = varonce; -} else { -var4 = "VIRTUAL_"; -var5 = 8; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on */; -var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var7) /* c_name on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on */; -if (varonce9) { -var10 = varonce9; -} else { -var11 = ""; -var12 = 0; -var13 = string__NativeString__to_s_with_length(var11, var12); -var10 = var13; -varonce9 = var10; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on */; -var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var = var14; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +abstract_compiler__AbstractCompilerVisitor__add(self, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on */ } -/* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: Object): String */ -val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__VirtualRuntimeFunction__build_c_name(self); -var = var1; RET_LABEL:; -return var; } -/* method separate_compiler#VirtualRuntimeFunction#to_s for (self: VirtualRuntimeFunction): String */ -val* separate_compiler__VirtualRuntimeFunction__to_s(val* self) { -val* var /* : String */; -val* var1 /* : MMethodDef */; -val* var2 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on */; -var = var2; -goto RET_LABEL; +/* method separate_compiler#SeparateCompilerVisitor#hardening_cast_type for (self: Object, String) */ +void VIRTUAL_separate_compiler__SeparateCompilerVisitor__hardening_cast_type(val* self, val* p0) { +separate_compiler__SeparateCompilerVisitor__hardening_cast_type(self, p0); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_cast_type on */ RET_LABEL:; -return var; } -/* method separate_compiler#VirtualRuntimeFunction#to_s for (self: Object): String */ -val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__to_s(val* self) { -val* var /* : String */; +/* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: SeparateCompilerVisitor, MClassType): RuntimeVariable */ +val* separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) { +val* var /* : RuntimeVariable */; +val* var_mtype /* var mtype: MClassType */; +static val* varonce; val* var1 /* : String */; -var1 = separate_compiler__VirtualRuntimeFunction__to_s(self); -var = var1; -RET_LABEL:; -return var; -} -/* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: VirtualRuntimeFunction, AbstractCompiler) */ -void separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) { -short int var /* : Bool */; +char* var2 /* : NativeString */; +long var3 /* : Int */; +val* var4 /* : FlatString */; +val* var5 /* : MClass */; +val* var7 /* : MClass */; +val* var8 /* : String */; +val* var9 /* : Array[Object] */; +long var10 /* : Int */; +val* var11 /* : NativeArray[Object] */; +val* var12 /* : String */; +val* var13 /* : AbstractCompiler */; +val* var15 /* : AbstractCompiler */; +val* var_compiler /* var compiler: SeparateCompiler */; +short int var16 /* : Bool */; +short int var17 /* : Bool */; int cltype; int idtype; -const struct type* type_struct; -const char* var_class_name; -val* var_compiler /* var compiler: AbstractCompiler */; -val* var1 /* : MMethodDef */; -val* var_mmethoddef /* var mmethoddef: MMethodDef */; -val* var2 /* : MMethodDef */; -val* var3 /* : MClassDef */; -val* var4 /* : MClassType */; -val* var_recv /* var recv: MClassType */; -val* var5 /* : AbstractCompilerVisitor */; -val* var_v /* var v: AbstractCompilerVisitor */; -val* var6 /* : RuntimeVariable */; -static val* varonce; -val* var7 /* : String */; -char* var8 /* : NativeString */; -long var9 /* : Int */; -val* var10 /* : String */; -val* var11 /* : MClassType */; -val* var_selfvar /* var selfvar: RuntimeVariable */; -val* var12 /* : Array[RuntimeVariable] */; -val* var_arguments /* var arguments: Array[RuntimeVariable] */; -val* var13 /* : Frame */; -val* var_frame /* var frame: Frame */; -val* var14 /* : Buffer */; -val* var_sig /* var sig: Buffer */; -val* var15 /* : Buffer */; -val* var_comment /* var comment: Buffer */; -val* var16 /* : MMethodDef */; -val* var17 /* : MProperty */; -val* var18 /* : MPropDef */; -val* var19 /* : MClassDef */; -val* var_intromclassdef /* var intromclassdef: MClassDef */; -val* var20 /* : MProperty */; -val* var21 /* : MPropDef */; -val* var22 /* : nullable MSignature */; -val* var23 /* : MClassType */; -val* var24 /* : MClassType */; -val* var25 /* : MModule */; -short int var26 /* : Bool */; -val* var27 /* : MType */; -val* var_msignature /* var msignature: MSignature */; -val* var28 /* : nullable MType */; -val* var_ret /* var ret: nullable MType */; -val* var29 /* : null */; -short int var30 /* : Bool */; -val* var31 /* : String */; -static val* varonce32; -val* var33 /* : String */; -char* var34 /* : NativeString */; -long var35 /* : Int */; -val* var36 /* : String */; -val* var37 /* : Array[Object] */; -long var38 /* : Int */; -val* var39 /* : NativeArray[Object] */; +short int var_ /* var : Bool */; +short int var18 /* : Bool */; +short int var20 /* : Bool */; +val* var21 /* : nullable Frame */; +val* var23 /* : nullable Frame */; +val* var24 /* : MPropDef */; +val* var26 /* : MPropDef */; +val* var27 /* : MClassDef */; +val* var29 /* : MClassDef */; +val* var30 /* : nullable Frame */; +val* var32 /* : nullable Frame */; +val* var33 /* : Array[RuntimeVariable] */; +val* var35 /* : Array[RuntimeVariable] */; +val* var36 /* : nullable Object */; +val* var_recv /* var recv: RuntimeVariable */; +val* var37 /* : String */; +val* var_recv_type_info /* var recv_type_info: String */; +val* var38 /* : String */; +static val* varonce39; val* var40 /* : String */; -val* var41 /* : MProperty */; -short int var42 /* : Bool */; -val* var43 /* : String */; -static val* varonce44; -val* var45 /* : String */; -char* var46 /* : NativeString */; -long var47 /* : Int */; -val* var48 /* : String */; -val* var49 /* : Array[Object] */; -long var50 /* : Int */; -val* var51 /* : NativeArray[Object] */; -val* var52 /* : String */; -static val* varonce53; -val* var54 /* : String */; -char* var55 /* : NativeString */; -long var56 /* : Int */; -val* var57 /* : String */; -val* var58 /* : String */; -static val* varonce59; -val* var60 /* : String */; -char* var61 /* : NativeString */; -long var62 /* : Int */; -val* var63 /* : String */; -val* var64 /* : MType */; -val* var65 /* : String */; -static val* varonce66; -val* var67 /* : String */; -char* var68 /* : NativeString */; -long var69 /* : Int */; -val* var70 /* : String */; -val* var71 /* : Array[Object] */; -long var72 /* : Int */; -val* var73 /* : NativeArray[Object] */; -val* var74 /* : String */; -static val* varonce75; -val* var76 /* : String */; -char* var77 /* : NativeString */; -long var78 /* : Int */; -val* var79 /* : String */; -static val* varonce80; -val* var81 /* : String */; -char* var82 /* : NativeString */; -long var83 /* : Int */; -val* var84 /* : String */; -val* var85 /* : MType */; -val* var86 /* : Array[Object] */; -long var87 /* : Int */; -val* var88 /* : NativeArray[Object] */; -val* var89 /* : String */; -val* var90 /* : Range[Int] */; -long var91 /* : Int */; -long var92 /* : Int */; -val* var93 /* : Discrete */; -val* var94 /* : Discrete */; -val* var95 /* : Iterator[nullable Object] */; -short int var96 /* : Bool */; -val* var97 /* : nullable Object */; -long var_i /* var i: Int */; -long var98 /* : Int */; -val* var99 /* : Array[MParameter] */; -val* var100 /* : nullable Object */; -val* var101 /* : MType */; -val* var_mtype /* var mtype: MType */; -long var102 /* : Int */; -short int var103 /* : Bool */; -short int var105 /* : Bool */; -static val* varonce106; -val* var107 /* : String */; -char* var108 /* : NativeString */; -long var109 /* : Int */; -val* var110 /* : String */; -val* var111 /* : MClass */; -val* var112 /* : Array[MType] */; -long var113 /* : Int */; -val* var114 /* : NativeArray[MType] */; -val* var115 /* : MClassType */; -static val* varonce116; -val* var117 /* : String */; -char* var118 /* : NativeString */; -long var119 /* : Int */; -val* var120 /* : String */; -val* var121 /* : Array[Object] */; -long var122 /* : Int */; -val* var123 /* : NativeArray[Object] */; -val* var124 /* : String */; -static val* varonce125; -val* var126 /* : String */; -char* var127 /* : NativeString */; -long var128 /* : Int */; -val* var129 /* : String */; -val* var130 /* : String */; -static val* varonce131; -val* var132 /* : String */; -char* var133 /* : NativeString */; -long var134 /* : Int */; -val* var135 /* : String */; -val* var136 /* : Array[Object] */; -long var137 /* : Int */; -val* var138 /* : NativeArray[Object] */; -val* var139 /* : Object */; -val* var140 /* : String */; -val* var141 /* : RuntimeVariable */; -val* var142 /* : Array[Object] */; -long var143 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce144; -val* var145 /* : String */; -char* var146 /* : NativeString */; -long var147 /* : Int */; -val* var148 /* : String */; -val* var149 /* : nullable Object */; -static val* varonce150; -val* var151 /* : String */; -char* var152 /* : NativeString */; -long var153 /* : Int */; -val* var154 /* : String */; -val* var155 /* : String */; -val* var_argvar /* var argvar: RuntimeVariable */; -static val* varonce156; -val* var157 /* : String */; -char* var158 /* : NativeString */; -long var159 /* : Int */; -val* var160 /* : String */; -static val* varonce161; -val* var162 /* : String */; -char* var163 /* : NativeString */; -long var164 /* : Int */; -val* var165 /* : String */; -val* var166 /* : null */; -short int var167 /* : Bool */; -static val* varonce168; -val* var169 /* : String */; -char* var170 /* : NativeString */; -long var171 /* : Int */; -val* var172 /* : String */; -val* var173 /* : Array[Object] */; -long var174 /* : Int */; -val* var175 /* : NativeArray[Object] */; -val* var176 /* : String */; -val* var177 /* : String */; -static val* varonce178; -val* var179 /* : String */; -char* var180 /* : NativeString */; -long var181 /* : Int */; -val* var182 /* : String */; -val* var183 /* : Array[Object] */; -long var184 /* : Int */; -val* var185 /* : NativeArray[Object] */; -val* var186 /* : String */; -static val* varonce187; -val* var188 /* : String */; -char* var189 /* : NativeString */; -long var190 /* : Int */; -val* var191 /* : String */; -static val* varonce192; -val* var193 /* : String */; -char* var194 /* : NativeString */; -long var195 /* : Int */; -val* var196 /* : String */; -static val* varonce197; -val* var198 /* : String */; -char* var199 /* : NativeString */; -long var200 /* : Int */; -val* var201 /* : String */; -val* var202 /* : Array[Object] */; -long var203 /* : Int */; -val* var204 /* : NativeArray[Object] */; -val* var205 /* : String */; -static val* varonce206; -val* var207 /* : String */; -char* var208 /* : NativeString */; -long var209 /* : Int */; -val* var210 /* : String */; -val* var211 /* : Array[Object] */; -long var212 /* : Int */; -val* var213 /* : NativeArray[Object] */; -val* var214 /* : String */; -val* var215 /* : null */; -short int var216 /* : Bool */; -val* var217 /* : RuntimeVariable */; -static val* varonce218; -val* var219 /* : String */; -char* var220 /* : NativeString */; -long var221 /* : Int */; -val* var222 /* : String */; -val* var223 /* : String */; -val* var224 /* : nullable RuntimeVariable */; -val* var_subret /* var subret: nullable RuntimeVariable */; -val* var225 /* : null */; -short int var226 /* : Bool */; -val* var227 /* : null */; -short int var228 /* : Bool */; -val* var229 /* : nullable RuntimeVariable */; -val* var230 /* : nullable String */; -static val* varonce231; -val* var232 /* : String */; -char* var233 /* : NativeString */; -long var234 /* : Int */; -val* var235 /* : String */; -val* var236 /* : Array[Object] */; -long var237 /* : Int */; -val* var238 /* : NativeArray[Object] */; -val* var239 /* : String */; -val* var240 /* : null */; -short int var241 /* : Bool */; -static val* varonce242; -val* var243 /* : String */; -char* var244 /* : NativeString */; -long var245 /* : Int */; -val* var246 /* : String */; -val* var247 /* : nullable RuntimeVariable */; -static val* varonce248; -val* var249 /* : String */; -char* var250 /* : NativeString */; -long var251 /* : Int */; -val* var252 /* : String */; -val* var253 /* : Array[Object] */; -long var254 /* : Int */; -val* var255 /* : NativeArray[Object] */; -val* var256 /* : String */; -static val* varonce257; -val* var258 /* : String */; -char* var259 /* : NativeString */; -long var260 /* : Int */; -val* var261 /* : String */; -val* var262 /* : String */; -static val* varonce263; -val* var264 /* : String */; -char* var265 /* : NativeString */; -long var266 /* : Int */; -val* var267 /* : String */; -long var268 /* : Int */; -short int var269 /* : Bool */; -short int var270 /* : Bool */; -val* var271 /* : HashMap[String, String] */; -val* var272 /* : String */; -val* var273 /* : MClassDef */; -val* var274 /* : MModule */; -val* var275 /* : String */; -static val* varonce276; -val* var277 /* : String */; -char* var278 /* : NativeString */; -long var279 /* : Int */; -val* var280 /* : String */; -val* var281 /* : MClassDef */; -val* var282 /* : MClass */; -val* var283 /* : String */; -static val* varonce284; -val* var285 /* : String */; -char* var286 /* : NativeString */; -long var287 /* : Int */; -val* var288 /* : String */; -val* var289 /* : MProperty */; -val* var290 /* : String */; -static val* varonce291; -val* var292 /* : String */; -char* var293 /* : NativeString */; -long var294 /* : Int */; -val* var295 /* : String */; -val* var296 /* : Location */; -val* var297 /* : nullable SourceFile */; -val* var298 /* : String */; -static val* varonce299; -val* var300 /* : String */; -char* var301 /* : NativeString */; -long var302 /* : Int */; -val* var303 /* : String */; -val* var304 /* : Location */; -long var305 /* : Int */; -static val* varonce306; -val* var307 /* : String */; -char* var308 /* : NativeString */; -long var309 /* : Int */; -val* var310 /* : String */; -val* var311 /* : Array[Object] */; -long var312 /* : Int */; -val* var313 /* : NativeArray[Object] */; -val* var314 /* : Object */; -val* var315 /* : String */; -/* Covariant cast for argument 0 (compiler) isa COMPILER */ -/* isa COMPILER */ -type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; -} -if (!var) { -var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1760); -show_backtrace(1); -} -var_compiler = p0; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var_mmethoddef = var1; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on */; -var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on */; -var_recv = var4; -var5 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on */; -var_v = var5; -var6 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable); +char* var41 /* : NativeString */; +long var42 /* : Int */; +val* var43 /* : FlatString */; +val* var44 /* : MClass */; +val* var46 /* : MClass */; +val* var47 /* : String */; +static val* varonce48; +val* var49 /* : String */; +char* var50 /* : NativeString */; +long var51 /* : Int */; +val* var52 /* : FlatString */; +static val* varonce53; +val* var54 /* : String */; +char* var55 /* : NativeString */; +long var56 /* : Int */; +val* var57 /* : FlatString */; +val* var58 /* : String */; +static val* varonce59; +val* var60 /* : String */; +char* var61 /* : NativeString */; +long var62 /* : Int */; +val* var63 /* : FlatString */; +val* var64 /* : Array[Object] */; +long var65 /* : Int */; +val* var66 /* : NativeArray[Object] */; +val* var67 /* : String */; +val* var68 /* : RuntimeVariable */; +val* var69 /* : Set[MType] */; +val* var71 /* : Set[MType] */; +static val* varonce72; +val* var73 /* : String */; +char* var74 /* : NativeString */; +long var75 /* : Int */; +val* var76 /* : FlatString */; +val* var77 /* : String */; +val* var78 /* : Array[Object] */; +long var79 /* : Int */; +val* var80 /* : NativeArray[Object] */; +val* var81 /* : String */; +static val* varonce82; +val* var83 /* : String */; +char* var84 /* : NativeString */; +long var85 /* : Int */; +val* var86 /* : FlatString */; +val* var87 /* : MClass */; +val* var89 /* : MClass */; +val* var90 /* : String */; +static val* varonce91; +val* var92 /* : String */; +char* var93 /* : NativeString */; +long var94 /* : Int */; +val* var95 /* : FlatString */; +val* var96 /* : String */; +static val* varonce97; +val* var98 /* : String */; +char* var99 /* : NativeString */; +long var100 /* : Int */; +val* var101 /* : FlatString */; +val* var102 /* : Array[Object] */; +long var103 /* : Int */; +val* var104 /* : NativeArray[Object] */; +val* var105 /* : String */; +val* var106 /* : RuntimeVariable */; +var_mtype = p0; if (varonce) { -var7 = varonce; -} else { -var8 = "self"; -var9 = 4; -var10 = string__NativeString__to_s_with_length(var8, var9); -var7 = var10; -varonce = var7; -} -var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(var_v) /* object_type on */; -((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var11, var_recv) /* init on */; -var_selfvar = var6; -var12 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable); -((void (*)(val*))(var12->class->vft[COLOR_array__Array__init]))(var12) /* init on */; -var_arguments = var12; -var13 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame); -((void (*)(val*, val*, val*, val*, val*))(var13->class->vft[COLOR_abstract_compiler__Frame__init]))(var13, var_v, var_mmethoddef, var_recv, var_arguments) /* init on */; -var_frame = var13; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on */; -var14 = NEW_string__Buffer(&type_string__Buffer); -((void (*)(val*))(var14->class->vft[COLOR_string__Buffer__init]))(var14) /* init on */; -var_sig = var14; -var15 = NEW_string__Buffer(&type_string__Buffer); -((void (*)(val*))(var15->class->vft[COLOR_string__Buffer__init]))(var15) /* init on */; -var_comment = var15; -var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on */; -var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MPropDef__mproperty]))(var16) /* mproperty on */; -var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MProperty__intro]))(var17) /* intro on */; -var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MPropDef__mclassdef]))(var18) /* mclassdef on */; -var_intromclassdef = var19; -var20 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on */; -var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MProperty__intro]))(var20) /* intro on */; -var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MMethodDef__msignature]))(var21) /* msignature on */; -var23 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on */; -var24 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on */; -var25 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on */; -var26 = 1; -if (var22 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1776); -show_backtrace(1); -} else { -var27 = ((val* (*)(val*, val*, val*, val*, short int))(var22->class->vft[COLOR_model__MType__resolve_for]))(var22, var23, var24, var25, var26) /* resolve_for on */; -} -var_msignature = var27; -var28 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on */; -var_ret = var28; -var29 = NULL; -if (var_ret == NULL) { -var30 = 0; /* is null */ -} else { -var30 = 1; /* arg is null and recv is not */ -} -if (var30){ -var31 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on */; -if (varonce32) { -var33 = varonce32; -} else { -var34 = " "; -var35 = 1; -var36 = string__NativeString__to_s_with_length(var34, var35); -var33 = var36; -varonce32 = var33; +var1 = varonce; +} else { +var2 = "NEW_"; +var3 = 4; +var4 = string__NativeString__to_s_with_length(var2, var3); +var1 = var4; +varonce = var1; +} +{ +{ /* Inline model#MClassType#mclass (var_mtype) on */ +var7 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); } -var37 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var37 = array_instance Array[Object] */ -var38 = 2; -var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var39)->values[0] = (val*) var31; -((struct instance_array__NativeArray*)var39)->values[1] = (val*) var33; -((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on */; -} -var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var40) /* append on */; -} else { -var41 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on */; -var42 = ((short int (*)(val*))(var41->class->vft[COLOR_model__MMethod__is_new]))(var41) /* is_new on */; -if (var42){ -var_ret = var_recv; -var43 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on */; -if (varonce44) { -var45 = varonce44; -} else { -var46 = " "; -var47 = 1; -var48 = string__NativeString__to_s_with_length(var46, var47); -var45 = var48; -varonce44 = var45; -} -var49 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var49 = array_instance Array[Object] */ -var50 = 2; -var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var51)->values[0] = (val*) var43; -((struct instance_array__NativeArray*)var51)->values[1] = (val*) var45; -((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on */; -} -var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var52) /* append on */; -} else { -if (varonce53) { -var54 = varonce53; -} else { -var55 = "void "; -var56 = 5; -var57 = string__NativeString__to_s_with_length(var55, var56); -var54 = var57; -varonce53 = var54; +var5 = var7; +RET_LABEL6:(void)0; } -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var54) /* append on */; } +{ +var8 = abstract_compiler__MClass__c_name(var5); } -var58 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var58) /* append on */; -if (varonce59) { -var60 = varonce59; -} else { -var61 = "("; -var62 = 1; -var63 = string__NativeString__to_s_with_length(var61, var62); -var60 = var63; -varonce59 = var60; +var9 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var9 = array_instance Array[Object] */ +var10 = 2; +var11 = NEW_array__NativeArray(var10, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var11)->values[0] = (val*) var1; +((struct instance_array__NativeArray*)var11)->values[1] = (val*) var8; +{ +((void (*)(val*, val*, long))(var9->class->vft[COLOR_array__Array__with_native]))(var9, var11, var10) /* with_native on */; } -var64 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on */; -var65 = ((val* (*)(val*))(var64->class->vft[COLOR_abstract_compiler__MType__ctype]))(var64) /* ctype on */; -if (varonce66) { -var67 = varonce66; -} else { -var68 = " "; -var69 = 1; -var70 = string__NativeString__to_s_with_length(var68, var69); -var67 = var70; -varonce66 = var67; -} -var71 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var71 = array_instance Array[Object] */ -var72 = 4; -var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var73)->values[0] = (val*) var60; -((struct instance_array__NativeArray*)var73)->values[1] = (val*) var65; -((struct instance_array__NativeArray*)var73)->values[2] = (val*) var67; -((struct instance_array__NativeArray*)var73)->values[3] = (val*) var_selfvar; -((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on */; -} -var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var74) /* append on */; -if (varonce75) { -var76 = varonce75; -} else { -var77 = "("; -var78 = 1; -var79 = string__NativeString__to_s_with_length(var77, var78); -var76 = var79; -varonce75 = var76; -} -if (varonce80) { -var81 = varonce80; -} else { -var82 = ": "; -var83 = 2; -var84 = string__NativeString__to_s_with_length(var82, var83); -var81 = var84; -varonce80 = var81; -} -var85 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on */; -var86 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var86 = array_instance Array[Object] */ -var87 = 4; -var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var88)->values[0] = (val*) var76; -((struct instance_array__NativeArray*)var88)->values[1] = (val*) var_selfvar; -((struct instance_array__NativeArray*)var88)->values[2] = (val*) var81; -((struct instance_array__NativeArray*)var88)->values[3] = (val*) var85; -((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on */; -} -var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on */; -((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var89) /* append on */; -((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on */; -var90 = NEW_range__Range(&type_range__Rangekernel__Int); -var91 = 0; -var92 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on */; -var93 = BOX_kernel__Int(var91); /* autobox from Int to Discrete */ -var94 = BOX_kernel__Int(var92); /* autobox from Int to Discrete */ -((void (*)(val*, val*, val*))(var90->class->vft[COLOR_range__Range__without_last]))(var90, var93, var94) /* without_last on */; -var95 = ((val* (*)(val*))(var90->class->vft[COLOR_abstract_collection__Collection__iterator]))(var90) /* iterator on */; -for(;;) { -var96 = ((short int (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var95) /* is_ok on */; -if(!var96) break; -var97 = ((val* (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__item]))(var95) /* item on */; -var98 = ((struct instance_kernel__Int*)var97)->value; /* autounbox from nullable Object to Int */; -var_i = var98; -var99 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on */; -var100 = ((val* (*)(val*, long))(var99->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var99, var_i) /* [] on */; -var101 = ((val* (*)(val*))(var100->class->vft[COLOR_model__MParameter__mtype]))(var100) /* mtype on */; -var_mtype = var101; -var102 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on */; -{ /* Inline kernel#Int#== (var_i,var102) */ -var105 = var_i == var102; -var103 = var105; -goto RET_LABEL104; -RET_LABEL104:(void)0; -} -if (var103){ -if (varonce106) { -var107 = varonce106; -} else { -var108 = "Array"; -var109 = 5; -var110 = string__NativeString__to_s_with_length(var108, var109); -var107 = var110; -varonce106 = var107; -} -var111 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var107) /* get_class on */; -var112 = NEW_array__Array(&type_array__Arraymodel__MType); -{ /* var112 = array_instance Array[MType] */ -var113 = 1; -var114 = NEW_array__NativeArray(var113, &type_array__NativeArraymodel__MType); -((struct instance_array__NativeArray*)var114)->values[0] = (val*) var_mtype; -((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on */; -} -var115 = ((val* (*)(val*, val*))(var111->class->vft[COLOR_model__MClass__get_mtype]))(var111, var112) /* get_mtype on */; -var_mtype = var115; -} else { -} -if (varonce116) { -var117 = varonce116; -} else { -var118 = ", "; -var119 = 2; -var120 = string__NativeString__to_s_with_length(var118, var119); -var117 = var120; -varonce116 = var117; -} -var121 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var121 = array_instance Array[Object] */ -var122 = 2; -var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var123)->values[0] = (val*) var117; -((struct instance_array__NativeArray*)var123)->values[1] = (val*) var_mtype; -((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on */; -} -var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on */; -((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var124) /* append on */; -if (varonce125) { -var126 = varonce125; -} else { -var127 = ", "; -var128 = 2; -var129 = string__NativeString__to_s_with_length(var127, var128); -var126 = var129; -varonce125 = var126; -} -var130 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on */; -if (varonce131) { -var132 = varonce131; -} else { -var133 = " p"; -var134 = 2; -var135 = string__NativeString__to_s_with_length(var133, var134); -var132 = var135; -varonce131 = var132; } -var136 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var136 = array_instance Array[Object] */ -var137 = 4; -var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var138)->values[0] = (val*) var126; -((struct instance_array__NativeArray*)var138)->values[1] = (val*) var130; -((struct instance_array__NativeArray*)var138)->values[2] = (val*) var132; -var139 = BOX_kernel__Int(var_i); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var138)->values[3] = (val*) var139; -((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on */; -} -var140 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on */; -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var140) /* append on */; -var141 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable); -var142 = NEW_array__Array(&type_array__Arraykernel__Object); -var143 = 3; -((void (*)(val*, long))(var142->class->vft[COLOR_array__Array__with_capacity]))(var142, var143) /* with_capacity on */; -var_ = var142; -if (varonce144) { -var145 = varonce144; -} else { -var146 = "p"; -var147 = 1; -var148 = string__NativeString__to_s_with_length(var146, var147); -var145 = var148; -varonce144 = var145; +{ +var12 = ((val* (*)(val*))(var9->class->vft[COLOR_string__Object__to_s]))(var9) /* to_s on */; } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var145) /* add on */; -var149 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */ -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var149) /* add on */; -if (varonce150) { -var151 = varonce150; -} else { -var152 = ""; -var153 = 0; -var154 = string__NativeString__to_s_with_length(var152, var153); -var151 = var154; -varonce150 = var151; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var151) /* add on */; -var155 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -((void (*)(val*, val*, val*, val*))(var141->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var141, var155, var_mtype, var_mtype) /* init on */; -var_argvar = var141; -((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on */; -CONTINUE_label: (void)0; -((void (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__next]))(var95) /* next on */; +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var12); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ } -BREAK_label: (void)0; -if (varonce156) { -var157 = varonce156; -} else { -var158 = ")"; -var159 = 1; -var160 = string__NativeString__to_s_with_length(var158, var159); -var157 = var160; -varonce156 = var157; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on */ +var15 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041); +show_backtrace(1); } -((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var157) /* append on */; -if (varonce161) { -var162 = varonce161; -} else { -var163 = ")"; -var164 = 1; -var165 = string__NativeString__to_s_with_length(var163, var164); -var162 = var165; -varonce161 = var162; +var13 = var15; +RET_LABEL14:(void)0; } -((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var162) /* append on */; -var166 = NULL; -if (var_ret == NULL) { -var167 = 0; /* is null */ -} else { -var167 = 1; /* arg is null and recv is not */ -} -if (var167){ -if (varonce168) { -var169 = varonce168; -} else { -var170 = ": "; -var171 = 2; -var172 = string__NativeString__to_s_with_length(var170, var171); -var169 = var172; -varonce168 = var169; -} -var173 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var173 = array_instance Array[Object] */ -var174 = 2; -var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var175)->values[0] = (val*) var169; -((struct instance_array__NativeArray*)var175)->values[1] = (val*) var_ret; -((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on */; -} -var176 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on */; -((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var176) /* append on */; -} else { -} -var177 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on */; -if (varonce178) { -var179 = varonce178; -} else { -var180 = ";"; -var181 = 1; -var182 = string__NativeString__to_s_with_length(var180, var181); -var179 = var182; -varonce178 = var179; -} -var183 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var183 = array_instance Array[Object] */ -var184 = 2; -var185 = NEW_array__NativeArray(var184, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var185)->values[0] = (val*) var_sig; -((struct instance_array__NativeArray*)var185)->values[1] = (val*) var179; -((void (*)(val*, val*, long))(var183->class->vft[COLOR_array__Array__with_native]))(var183, var185, var184) /* with_native on */; -} -var186 = ((val* (*)(val*))(var183->class->vft[COLOR_string__Object__to_s]))(var183) /* to_s on */; -((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var177, var186) /* provide_declaration on */; -if (varonce187) { -var188 = varonce187; -} else { -var189 = "/* method "; -var190 = 10; -var191 = string__NativeString__to_s_with_length(var189, var190); -var188 = var191; -varonce187 = var188; } -if (varonce192) { -var193 = varonce192; +var_compiler = var13; +/* isa MGenericType */ +cltype = type_model__MGenericType.color; +idtype = type_model__MGenericType.id; +if(cltype >= var_mtype->type->table_size) { +var17 = 0; } else { -var194 = " for "; -var195 = 5; -var196 = string__NativeString__to_s_with_length(var194, var195); -var193 = var196; -varonce192 = var193; +var17 = var_mtype->type->type_table[cltype] == idtype; } -if (varonce197) { -var198 = varonce197; -} else { -var199 = " */"; -var200 = 3; -var201 = string__NativeString__to_s_with_length(var199, var200); -var198 = var201; -varonce197 = var198; +var_ = var17; +if (var17){ +{ +{ /* Inline model#MGenericType#need_anchor (var_mtype) on */ +var20 = var_mtype->attrs[COLOR_model__MGenericType___need_anchor].s; /* _need_anchor on */ +var18 = var20; +RET_LABEL19:(void)0; } -var202 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var202 = array_instance Array[Object] */ -var203 = 5; -var204 = NEW_array__NativeArray(var203, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var204)->values[0] = (val*) var188; -((struct instance_array__NativeArray*)var204)->values[1] = (val*) self; -((struct instance_array__NativeArray*)var204)->values[2] = (val*) var193; -((struct instance_array__NativeArray*)var204)->values[3] = (val*) var_comment; -((struct instance_array__NativeArray*)var204)->values[4] = (val*) var198; -((void (*)(val*, val*, long))(var202->class->vft[COLOR_array__Array__with_native]))(var202, var204, var203) /* with_native on */; } -var205 = ((val* (*)(val*))(var202->class->vft[COLOR_string__Object__to_s]))(var202) /* to_s on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var205) /* add_decl on */; -if (varonce206) { -var207 = varonce206; -} else { -var208 = " {"; -var209 = 2; -var210 = string__NativeString__to_s_with_length(var208, var209); -var207 = var210; -varonce206 = var207; -} -var211 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var211 = array_instance Array[Object] */ -var212 = 2; -var213 = NEW_array__NativeArray(var212, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var213)->values[0] = (val*) var_sig; -((struct instance_array__NativeArray*)var213)->values[1] = (val*) var207; -((void (*)(val*, val*, long))(var211->class->vft[COLOR_array__Array__with_native]))(var211, var213, var212) /* with_native on */; -} -var214 = ((val* (*)(val*))(var211->class->vft[COLOR_string__Object__to_s]))(var211) /* to_s on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var214) /* add_decl on */; -var215 = NULL; -if (var_ret == NULL) { -var216 = 0; /* is null */ +var16 = var18; } else { -var216 = 1; /* arg is null and recv is not */ +var16 = var_; } -if (var216){ -var217 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on */; -((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var217) /* returnvar= on */; -} else { +if (var16){ +{ +separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(self, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_live_open_type on */ } -if (varonce218) { -var219 = varonce218; -} else { -var220 = "RET_LABEL"; -var221 = 9; -var222 = string__NativeString__to_s_with_length(var220, var221); -var219 = var222; -varonce218 = var219; +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on */ +var23 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on */ +var21 = var23; +RET_LABEL22:(void)0; } -var223 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var219) /* get_name on */; -((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var223) /* returnlabel= on */; -var224 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__call]))(var_v, var_mmethoddef, var_recv, var_arguments) /* call on */; -var_subret = var224; -var225 = NULL; -if (var_ret == NULL) { -var226 = 0; /* is null */ -} else { -var226 = 1; /* arg is null and recv is not */ } -if (var226){ -var227 = NULL; -if (var_subret == NULL) { -var228 = 0; /* is null */ +if (var21 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1450); +show_backtrace(1); } else { -var228 = 1; /* arg is null and recv is not */ +{ /* Inline abstract_compiler#Frame#mpropdef (var21) on */ +if (unlikely(var21 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681); +show_backtrace(1); } -if (!var228) { -fprintf(stderr, "Runtime error: %s", "Assert failed"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1816); +var26 = var21->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681); show_backtrace(1); } -var229 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on */; -if (var229 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1817); +var24 = var26; +RET_LABEL25:(void)0; +} +} +{ +{ /* Inline model#MPropDef#mclassdef (var24) on */ +var29 = var24->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var29 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895); show_backtrace(1); } -((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var229, var_subret) /* assign on */; +var27 = var29; +RET_LABEL28:(void)0; +} +} +{ +separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, var27, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#link_unresolved_type on */ +} +{ +{ /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on */ +var32 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on */ +var30 = var32; +RET_LABEL31:(void)0; +} +} +if (var30 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1451); +show_backtrace(1); } else { +{ /* Inline abstract_compiler#Frame#arguments (var30) on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688); +show_backtrace(1); } -var230 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on */; -if (var230 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1820); +var35 = var30->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on */ +if (unlikely(var35 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments"); +PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688); show_backtrace(1); } -if (varonce231) { -var232 = varonce231; -} else { -var233 = ":;"; -var234 = 2; -var235 = string__NativeString__to_s_with_length(var233, var234); -var232 = var235; -varonce231 = var232; +var33 = var35; +RET_LABEL34:(void)0; } -var236 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var236 = array_instance Array[Object] */ -var237 = 2; -var238 = NEW_array__NativeArray(var237, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var238)->values[0] = (val*) var230; -((struct instance_array__NativeArray*)var238)->values[1] = (val*) var232; -((void (*)(val*, val*, long))(var236->class->vft[COLOR_array__Array__with_native]))(var236, var238, var237) /* with_native on */; -} -var239 = ((val* (*)(val*))(var236->class->vft[COLOR_string__Object__to_s]))(var236) /* to_s on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var239) /* add on */; -var240 = NULL; -if (var_ret == NULL) { -var241 = 0; /* is null */ -} else { -var241 = 1; /* arg is null and recv is not */ } -if (var241){ -if (varonce242) { -var243 = varonce242; -} else { -var244 = "return "; -var245 = 7; -var246 = string__NativeString__to_s_with_length(var244, var245); -var243 = var246; -varonce242 = var243; +{ +var36 = abstract_collection__SequenceRead__first(var33); } -var247 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on */; -if (var247 == NULL) { -fprintf(stderr, "Runtime error: %s", "Cast failed"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1822); -show_backtrace(1); -} -if (varonce248) { -var249 = varonce248; -} else { -var250 = ";"; -var251 = 1; -var252 = string__NativeString__to_s_with_length(var250, var251); -var249 = var252; -varonce248 = var249; -} -var253 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var253 = array_instance Array[Object] */ -var254 = 3; -var255 = NEW_array__NativeArray(var254, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var255)->values[0] = (val*) var243; -((struct instance_array__NativeArray*)var255)->values[1] = (val*) var247; -((struct instance_array__NativeArray*)var255)->values[2] = (val*) var249; -((void (*)(val*, val*, long))(var253->class->vft[COLOR_array__Array__with_native]))(var253, var255, var254) /* with_native on */; -} -var256 = ((val* (*)(val*))(var253->class->vft[COLOR_string__Object__to_s]))(var253) /* to_s on */; -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var256) /* add on */; -} else { -} -if (varonce257) { -var258 = varonce257; -} else { -var259 = "}"; -var260 = 1; -var261 = string__NativeString__to_s_with_length(var259, var260); -var258 = var261; -varonce257 = var258; -} -((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var258) /* add on */; -var262 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on */; -if (varonce263) { -var264 = varonce263; -} else { -var265 = "VIRTUAL"; -var266 = 7; -var267 = string__NativeString__to_s_with_length(var265, var266); -var264 = var267; -varonce263 = var264; -} -var268 = 0; -var269 = ((short int (*)(val*, val*, long))(var262->class->vft[COLOR_string__AbstractString__has_substring]))(var262, var264, var268) /* has_substring on */; -var270 = !var269; -if (var270){ -var271 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(var_compiler) /* names on */; -var272 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on */; -var273 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var274 = ((val* (*)(val*))(var273->class->vft[COLOR_model__MClassDef__mmodule]))(var273) /* mmodule on */; -var275 = ((val* (*)(val*))(var274->class->vft[COLOR_mmodule__MModule__name]))(var274) /* name on */; -if (varonce276) { -var277 = varonce276; -} else { -var278 = "::"; -var279 = 2; -var280 = string__NativeString__to_s_with_length(var278, var279); -var277 = var280; -varonce276 = var277; +var_recv = var36; +{ +var37 = separate_compiler__SeparateCompilerVisitor__type_info(self, var_recv); } -var281 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on */; -var282 = ((val* (*)(val*))(var281->class->vft[COLOR_model__MClassDef__mclass]))(var281) /* mclass on */; -var283 = ((val* (*)(val*))(var282->class->vft[COLOR_model__MClass__name]))(var282) /* name on */; -if (varonce284) { -var285 = varonce284; -} else { -var286 = "::"; -var287 = 2; -var288 = string__NativeString__to_s_with_length(var286, var287); -var285 = var288; -varonce284 = var285; +var_recv_type_info = var37; +{ +var38 = separate_compiler__MType__const_color(var_mtype); +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var38); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ } -var289 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on */; -var290 = ((val* (*)(val*))(var289->class->vft[COLOR_model__MProperty__name]))(var289) /* name on */; -if (varonce291) { -var292 = varonce291; -} else { -var293 = " ("; -var294 = 2; -var295 = string__NativeString__to_s_with_length(var293, var294); -var292 = var295; -varonce291 = var292; -} -var296 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on */; -var297 = ((val* (*)(val*))(var296->class->vft[COLOR_location__Location__file]))(var296) /* file on */; -if (var297 == NULL) { -fprintf(stderr, "Runtime error: %s", "Receiver is null"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1825); -show_backtrace(1); -} else { -var298 = ((val* (*)(val*))(var297->class->vft[COLOR_location__SourceFile__filename]))(var297) /* filename on */; -} -if (varonce299) { -var300 = varonce299; -} else { -var301 = "--"; -var302 = 2; -var303 = string__NativeString__to_s_with_length(var301, var302); -var300 = var303; -varonce299 = var300; -} -var304 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on */; -var305 = ((long (*)(val*))(var304->class->vft[COLOR_location__Location__line_start]))(var304) /* line_start on */; -if (varonce306) { -var307 = varonce306; -} else { -var308 = ")"; -var309 = 1; -var310 = string__NativeString__to_s_with_length(var308, var309); -var307 = var310; -varonce306 = var307; -} -var311 = NEW_array__Array(&type_array__Arraykernel__Object); -{ /* var311 = array_instance Array[Object] */ -var312 = 10; -var313 = NEW_array__NativeArray(var312, &type_array__NativeArraykernel__Object); -((struct instance_array__NativeArray*)var313)->values[0] = (val*) var275; -((struct instance_array__NativeArray*)var313)->values[1] = (val*) var277; -((struct instance_array__NativeArray*)var313)->values[2] = (val*) var283; -((struct instance_array__NativeArray*)var313)->values[3] = (val*) var285; -((struct instance_array__NativeArray*)var313)->values[4] = (val*) var290; -((struct instance_array__NativeArray*)var313)->values[5] = (val*) var292; -((struct instance_array__NativeArray*)var313)->values[6] = (val*) var298; -((struct instance_array__NativeArray*)var313)->values[7] = (val*) var300; -var314 = BOX_kernel__Int(var305); /* autobox from Int to Object */ -((struct instance_array__NativeArray*)var313)->values[8] = (val*) var314; -((struct instance_array__NativeArray*)var313)->values[9] = (val*) var307; -((void (*)(val*, val*, long))(var311->class->vft[COLOR_array__Array__with_native]))(var311, var313, var312) /* with_native on */; -} -var315 = ((val* (*)(val*))(var311->class->vft[COLOR_string__Object__to_s]))(var311) /* to_s on */; -((void (*)(val*, val*, val*))(var271->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var271, var272, var315) /* []= on */; +if (varonce39) { +var40 = varonce39; } else { +var41 = "NEW_"; +var42 = 4; +var43 = string__NativeString__to_s_with_length(var41, var42); +var40 = var43; +varonce39 = var40; } -RET_LABEL:; +{ +{ /* Inline model#MClassType#mclass (var_mtype) on */ +var46 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var46 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); } -/* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */ -void VIRTUAL_separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) { -separate_compiler__VirtualRuntimeFunction__compile_to_c(self, p0); -RET_LABEL:; +var44 = var46; +RET_LABEL45:(void)0; } -/* method separate_compiler#VirtualRuntimeFunction#call for (self: VirtualRuntimeFunction, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */ -val* separate_compiler__VirtualRuntimeFunction__call(val* self, val* p0, val* p1) { -val* var /* : nullable RuntimeVariable */; -short int var1 /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -const char* var_class_name; -val* var_v /* var v: AbstractCompilerVisitor */; -val* var_arguments /* var arguments: Array[RuntimeVariable] */; -/* Covariant cast for argument 0 (v) isa VISITOR */ -/* isa VISITOR */ -type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTVISITOR]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var1 = 0; +} +{ +var47 = abstract_compiler__MClass__c_name(var44); +} +if (varonce48) { +var49 = varonce48; } else { -var1 = p0->type->type_table[cltype] == idtype; +var50 = "("; +var51 = 1; +var52 = string__NativeString__to_s_with_length(var50, var51); +var49 = var52; +varonce48 = var49; } -if (!var1) { -var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1828); -show_backtrace(1); +if (varonce53) { +var54 = varonce53; +} else { +var55 = "->resolution_table->types["; +var56 = 26; +var57 = string__NativeString__to_s_with_length(var55, var56); +var54 = var57; +varonce53 = var54; } -var_v = p0; -var_arguments = p1; -fprintf(stderr, "Runtime error: %s", "Aborted"); -fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1829); -show_backtrace(1); -RET_LABEL:; -return var; +{ +var58 = separate_compiler__MType__const_color(var_mtype); } -/* method separate_compiler#VirtualRuntimeFunction#call for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */ -val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__call(val* self, val* p0, val* p1) { -val* var /* : nullable RuntimeVariable */; -val* var1 /* : nullable RuntimeVariable */; -var1 = separate_compiler__VirtualRuntimeFunction__call(self, p0, p1); -var = var1; -RET_LABEL:; -return var; +if (varonce59) { +var60 = varonce59; +} else { +var61 = "])"; +var62 = 2; +var63 = string__NativeString__to_s_with_length(var61, var62); +var60 = var63; +varonce59 = var60; } -/* method separate_compiler#MType#const_color for (self: MType): String */ -val* separate_compiler__MType__const_color(val* self) { -val* var /* : String */; -val* var1 /* : Array[Object] */; -long var2 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; -val* var7 /* : String */; -static val* varonce8; -val* var9 /* : String */; -char* var10 /* : NativeString */; -long var11 /* : Int */; -val* var12 /* : String */; -val* var13 /* : String */; -var1 = NEW_array__Array(&type_array__Arraykernel__Object); -var2 = 3; -((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on */; -var_ = var1; -if (varonce) { -var3 = varonce; -} else { -var4 = "COLOR_"; -var5 = 6; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on */; -var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name]))(self) /* c_name on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on */; -if (varonce8) { -var9 = varonce8; -} else { -var10 = ""; -var11 = 0; -var12 = string__NativeString__to_s_with_length(var10, var11); -var9 = var12; -varonce8 = var9; +var64 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var64 = array_instance Array[Object] */ +var65 = 7; +var66 = NEW_array__NativeArray(var65, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var66)->values[0] = (val*) var40; +((struct instance_array__NativeArray*)var66)->values[1] = (val*) var47; +((struct instance_array__NativeArray*)var66)->values[2] = (val*) var49; +((struct instance_array__NativeArray*)var66)->values[3] = (val*) var_recv_type_info; +((struct instance_array__NativeArray*)var66)->values[4] = (val*) var54; +((struct instance_array__NativeArray*)var66)->values[5] = (val*) var58; +((struct instance_array__NativeArray*)var66)->values[6] = (val*) var60; +{ +((void (*)(val*, val*, long))(var64->class->vft[COLOR_array__Array__with_native]))(var64, var66, var65) /* with_native on */; } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on */; -var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var = var13; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method separate_compiler#MType#const_color for (self: Object): String */ -val* VIRTUAL_separate_compiler__MType__const_color(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__MType__const_color(self); -var = var1; -RET_LABEL:; -return var; +{ +var67 = ((val* (*)(val*))(var64->class->vft[COLOR_string__Object__to_s]))(var64) /* to_s on */; } -/* method separate_compiler#MType#c_instance_name for (self: MType): String */ -val* separate_compiler__MType__c_instance_name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name]))(self) /* c_name on */; -var = var1; +{ +var68 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, var67, var_mtype); +} +var = var68; goto RET_LABEL; -RET_LABEL:; -return var; +} else { } -/* method separate_compiler#MType#c_instance_name for (self: Object): String */ -val* VIRTUAL_separate_compiler__MType__c_instance_name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__MType__c_instance_name(self); -var = var1; -RET_LABEL:; -return var; +{ +{ /* Inline separate_compiler#SeparateCompiler#undead_types (var_compiler) on */ +var71 = var_compiler->attrs[COLOR_separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on */ +if (unlikely(var71 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types"); +PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 156); +show_backtrace(1); } -/* method separate_compiler#MClassType#c_instance_name for (self: MClassType): String */ -val* separate_compiler__MClassType__c_instance_name(val* self) { -val* var /* : String */; -val* var1 /* : MClass */; -val* var2 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on */; -var2 = ((val* (*)(val*))(var1->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var1) /* c_instance_name on */; -var = var2; -goto RET_LABEL; -RET_LABEL:; -return var; +var69 = var71; +RET_LABEL70:(void)0; } -/* method separate_compiler#MClassType#c_instance_name for (self: Object): String */ -val* VIRTUAL_separate_compiler__MClassType__c_instance_name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__MClassType__c_instance_name(self); -var = var1; -RET_LABEL:; -return var; } -/* method separate_compiler#MClass#c_instance_name for (self: MClass): String */ -val* separate_compiler__MClass__c_instance_name(val* self) { -val* var /* : String */; -val* var1 /* : MClassKind */; -val* var2 /* : MClassKind */; -short int var3 /* : Bool */; -static val* varonce; -val* var4 /* : String */; -char* var5 /* : NativeString */; -long var6 /* : Int */; -val* var7 /* : String */; -val* var8 /* : String */; -var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__kind]))(self) /* kind on */; -var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on */; -var3 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var2) /* == on */; -if (var3){ -if (varonce) { -var4 = varonce; -} else { -var5 = "kernel__Pointer"; -var6 = 15; -var7 = string__NativeString__to_s_with_length(var5, var6); -var4 = var7; -varonce = var4; +{ +((void (*)(val*, val*))(var69->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var69, var_mtype) /* add on */; } -var = var4; -goto RET_LABEL; +if (varonce72) { +var73 = varonce72; } else { -var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MClass__c_name]))(self) /* c_name on */; -var = var8; -goto RET_LABEL; +var74 = "type_"; +var75 = 5; +var76 = string__NativeString__to_s_with_length(var74, var75); +var73 = var76; +varonce72 = var73; } -RET_LABEL:; -return var; +{ +var77 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on */; } -/* method separate_compiler#MClass#c_instance_name for (self: Object): String */ -val* VIRTUAL_separate_compiler__MClass__c_instance_name(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__MClass__c_instance_name(self); -var = var1; -RET_LABEL:; -return var; +var78 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var78 = array_instance Array[Object] */ +var79 = 2; +var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var80)->values[0] = (val*) var73; +((struct instance_array__NativeArray*)var80)->values[1] = (val*) var77; +{ +((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on */; +} +} +{ +var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on */; +} +{ +abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var81); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on */ +} +if (varonce82) { +var83 = varonce82; +} else { +var84 = "NEW_"; +var85 = 4; +var86 = string__NativeString__to_s_with_length(var84, var85); +var83 = var86; +varonce82 = var83; +} +{ +{ /* Inline model#MClassType#mclass (var_mtype) on */ +var89 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on */ +if (unlikely(var89 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); +PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986); +show_backtrace(1); } -/* method separate_compiler#MProperty#const_color for (self: MProperty): String */ -val* separate_compiler__MProperty__const_color(val* self) { -val* var /* : String */; -val* var1 /* : Array[Object] */; -long var2 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; -val* var7 /* : String */; -static val* varonce8; -val* var9 /* : String */; -char* var10 /* : NativeString */; -long var11 /* : Int */; -val* var12 /* : String */; -val* var13 /* : String */; -var1 = NEW_array__Array(&type_array__Arraykernel__Object); -var2 = 3; -((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on */; -var_ = var1; -if (varonce) { -var3 = varonce; -} else { -var4 = "COLOR_"; -var5 = 6; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on */; -var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MProperty__c_name]))(self) /* c_name on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on */; -if (varonce8) { -var9 = varonce8; -} else { -var10 = ""; -var11 = 0; -var12 = string__NativeString__to_s_with_length(var10, var11); -var9 = var12; -varonce8 = var9; +var87 = var89; +RET_LABEL88:(void)0; } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on */; -var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var = var13; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method separate_compiler#MProperty#const_color for (self: Object): String */ -val* VIRTUAL_separate_compiler__MProperty__const_color(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__MProperty__const_color(self); -var = var1; -RET_LABEL:; -return var; +{ +var90 = abstract_compiler__MClass__c_name(var87); } -/* method separate_compiler#MPropDef#const_color for (self: MPropDef): String */ -val* separate_compiler__MPropDef__const_color(val* self) { -val* var /* : String */; -val* var1 /* : Array[Object] */; -long var2 /* : Int */; -val* var_ /* var : Array[Object] */; -static val* varonce; -val* var3 /* : String */; -char* var4 /* : NativeString */; -long var5 /* : Int */; -val* var6 /* : String */; -val* var7 /* : String */; -static val* varonce8; -val* var9 /* : String */; -char* var10 /* : NativeString */; -long var11 /* : Int */; -val* var12 /* : String */; -val* var13 /* : String */; -var1 = NEW_array__Array(&type_array__Arraykernel__Object); -var2 = 3; -((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on */; -var_ = var1; -if (varonce) { -var3 = varonce; -} else { -var4 = "COLOR_"; -var5 = 6; -var6 = string__NativeString__to_s_with_length(var4, var5); -var3 = var6; -varonce = var3; -} -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on */; -var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(self) /* c_name on */; -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on */; -if (varonce8) { -var9 = varonce8; -} else { -var10 = ""; -var11 = 0; -var12 = string__NativeString__to_s_with_length(var10, var11); -var9 = var12; -varonce8 = var9; +if (varonce91) { +var92 = varonce91; +} else { +var93 = "(&type_"; +var94 = 7; +var95 = string__NativeString__to_s_with_length(var93, var94); +var92 = var95; +varonce91 = var92; +} +{ +var96 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on */; } -((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on */; -var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on */; -var = var13; +if (varonce97) { +var98 = varonce97; +} else { +var99 = ")"; +var100 = 1; +var101 = string__NativeString__to_s_with_length(var99, var100); +var98 = var101; +varonce97 = var98; +} +var102 = NEW_array__Array(&type_array__Arraykernel__Object); +{ /* var102 = array_instance Array[Object] */ +var103 = 5; +var104 = NEW_array__NativeArray(var103, &type_array__NativeArraykernel__Object); +((struct instance_array__NativeArray*)var104)->values[0] = (val*) var83; +((struct instance_array__NativeArray*)var104)->values[1] = (val*) var90; +((struct instance_array__NativeArray*)var104)->values[2] = (val*) var92; +((struct instance_array__NativeArray*)var104)->values[3] = (val*) var96; +((struct instance_array__NativeArray*)var104)->values[4] = (val*) var98; +{ +((void (*)(val*, val*, long))(var102->class->vft[COLOR_array__Array__with_native]))(var102, var104, var103) /* with_native on */; +} +} +{ +var105 = ((val* (*)(val*))(var102->class->vft[COLOR_string__Object__to_s]))(var102) /* to_s on */; +} +{ +var106 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, var105, var_mtype); +} +var = var106; goto RET_LABEL; RET_LABEL:; return var; } -/* method separate_compiler#MPropDef#const_color for (self: Object): String */ -val* VIRTUAL_separate_compiler__MPropDef__const_color(val* self) { -val* var /* : String */; -val* var1 /* : String */; -var1 = separate_compiler__MPropDef__const_color(self); +/* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */ +val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) { +val* var /* : RuntimeVariable */; +val* var1 /* : RuntimeVariable */; +var1 = separate_compiler__SeparateCompilerVisitor__init_instance(self, p0); var = var1; RET_LABEL:; return var;