diff options
-rw-r--r-- | backendC/CleanCompilerSources/instructions.c | 28 | ||||
-rw-r--r-- | coclmaindll/backend.dll | bin | 295424 -> 295936 bytes |
2 files changed, 13 insertions, 15 deletions
diff --git a/backendC/CleanCompilerSources/instructions.c b/backendC/CleanCompilerSources/instructions.c index c23774a..e37f2a4 100644 --- a/backendC/CleanCompilerSources/instructions.c +++ b/backendC/CleanCompilerSources/instructions.c @@ -3136,7 +3136,7 @@ void GenLazyRecordDescriptorAndExport (SymbDef sdef) void GenFieldSelectorDescriptor (SymbDef sdef,int has_gc_apply_entry) { - char *name; + char *name,*record_name; int arity; if (!DescriptorNeeded (sdef)) @@ -3144,24 +3144,22 @@ void GenFieldSelectorDescriptor (SymbDef sdef,int has_gc_apply_entry) name = sdef->sdef_ident->ident_name; arity = (sdef->sdef_kind == RECORDTYPE) ? sdef->sdef_cons_arity : sdef->sdef_arity; + + record_name=sdef->sdef_type->type_lhs->ft_symbol->symb_def->sdef_ident->ident_name; put_directive_ (Ddesc); if (sdef->sdef_exported){ - char *record_name; - - record_name=sdef->sdef_type->type_lhs->ft_symbol->symb_def->sdef_ident->ident_name; - if (has_gc_apply_entry) - FPrintF (OutFile, "e_%s_" D_PREFIX "%s.%s e_%s_" N_PREFIX "%s.%s e_%s_%s%s.%s %d 0 \"%s\"", + FPrintF (OutFile, "e_%s_" D_PREFIX "%s.%s e_%s_" N_PREFIX "%s.%s e_%s_%s%s.%s %d 0 \"%s.%s\"", CurrentModule,record_name,name, CurrentModule,record_name,name, CurrentModule,l_pref,record_name,name, - arity, name); + arity,record_name,name); else - FPrintF (OutFile, "e_%s_" D_PREFIX "%s.%s e_%s_" N_PREFIX "%s.%s _hnf %d 0 \"%s\"", + FPrintF (OutFile, "e_%s_" D_PREFIX "%s.%s e_%s_" N_PREFIX "%s.%s _hnf %d 0 \"%s.%s\"", CurrentModule,record_name,name, CurrentModule,record_name,name, - arity, name); + arity,record_name,name); } else if ((sdef->sdef_mark & SDEF_USED_LAZILY_MASK) || has_gc_apply_entry){ char *record_name; @@ -3187,14 +3185,14 @@ void GenFieldSelectorDescriptor (SymbDef sdef,int has_gc_apply_entry) FPrintF (OutFile, "%s%u ",l_pref,sdef->sdef_number); } else FPrintF (OutFile, "%s ", hnf_lab.lab_name); - - FPrintF (OutFile, "%d 0 \"%s\"", arity, name); + + FPrintF (OutFile, "%d 0 \"%s.%s\"", arity,record_name,name); } else if (DoDebug){ - FPrintF (OutFile, D_PREFIX "%s %s %s %d 0 \"%s\"", name, hnf_lab.lab_name, - hnf_lab.lab_name, arity, name); + FPrintF (OutFile, D_PREFIX "%s %s %s %d 0 \"%s.%s\"", name, hnf_lab.lab_name, + hnf_lab.lab_name,arity,record_name,name); } else - FPrintF (OutFile, LOCAL_D_PREFIX "%u %s %s %d 0 \"%s\"", sdef->sdef_number, - hnf_lab.lab_name, hnf_lab.lab_name, arity, name); + FPrintF (OutFile, LOCAL_D_PREFIX "%u %s %s %d 0 \"%s.%s\"", sdef->sdef_number, + hnf_lab.lab_name, hnf_lab.lab_name, arity,record_name,name); } void GenModuleDescriptor ( diff --git a/coclmaindll/backend.dll b/coclmaindll/backend.dll Binary files differindex ae9ba9e..5cd1f94 100644 --- a/coclmaindll/backend.dll +++ b/coclmaindll/backend.dll |