* insert the hidden parameters for objectdef methods after resolving

overrides but before generating the VMT, so that these hidden parameters
    are part of the procdefs stored in the VMT (fixes some LLVM type errors
    after r41716)

git-svn-id: trunk@41884 -
This commit is contained in:
Jonas Maebe 2019-04-16 16:11:50 +00:00
parent 8ff0aaa369
commit e008785152
4 changed files with 3 additions and 5 deletions

View File

@ -322,7 +322,6 @@ implementation
vmtbuilder:=TVMTBuilder.Create(enumclass);
vmtbuilder.generate_vmt;
vmtbuilder.free;
insert_struct_hidden_paras(enumclass);
restore_after_new_class(sstate,islocal,oldsymtablestack);
current_structdef:=old_current_structdef;
@ -433,7 +432,6 @@ implementation
vmtbuilder:=TVMTBuilder.Create(pvclass);
vmtbuilder.generate_vmt;
vmtbuilder.free;
insert_struct_hidden_paras(pvclass);
restore_after_new_class(sstate,islocal,oldsymtablestack);
end;

View File

@ -60,7 +60,8 @@ implementation
globals,verbose,systems,
node,
symbase,symtable,symconst,symtype,symcpu,
defcmp;
defcmp,
pparautl;
{*****************************************************************************
@ -922,6 +923,7 @@ implementation
add_new_vmt_entry(tprocdef(def),overridesclasshelper);
end;
end;
insert_struct_hidden_paras(_class);
build_interface_mappings;
if assigned(_class.ImplementedInterfaces) and
not(is_objc_class_or_protocol(_class)) and

View File

@ -888,7 +888,6 @@ implementation
vmtbuilder:=TVMTBuilder.Create(tobjectdef(hdef));
vmtbuilder.generate_vmt;
vmtbuilder.free;
insert_struct_hidden_paras(tobjectdef(hdef));
end;
{ In case of an objcclass, verify that all methods have a message

View File

@ -1059,7 +1059,6 @@ uses
vmtbuilder:=TVMTBuilder.Create(tobjectdef(result));
vmtbuilder.generate_vmt;
vmtbuilder.free;
insert_struct_hidden_paras(tobjectdef(result));
end;
{ handle params, calling convention, etc }
procvardef: