mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 03:48:07 +02:00
* apply patch by Blaise.ru to remove last remnants of VMT regeneration which is no longer needed/used
git-svn-id: trunk@43628 -
This commit is contained in:
parent
b86b2f1b80
commit
f2818bfe7a
@ -801,7 +801,6 @@ implementation
|
||||
vmtdef: trecorddef;
|
||||
systemvmt: tdef;
|
||||
sym: tsym;
|
||||
vmtdefname: TIDString;
|
||||
begin
|
||||
{ these types don't have an actual VMT, we only use the other methods
|
||||
in TVMTBuilder to determine duplicates/overrides }
|
||||
@ -826,13 +825,9 @@ implementation
|
||||
if _class.objecttype = odt_cppclass then
|
||||
exit;
|
||||
|
||||
{ the VMT definition may already exist in case of generics }
|
||||
vmtdefname:=internaltypeprefixName[itp_vmtdef]+_class.mangledparaname;
|
||||
if assigned(try_search_current_module_type(vmtdefname)) then
|
||||
exit;
|
||||
{ create VMT type definition }
|
||||
vmtdef:=crecorddef.create_global_internal(
|
||||
vmtdefname,
|
||||
internaltypeprefixName[itp_vmtdef]+_class.mangledparaname,
|
||||
0,
|
||||
target_info.alignment.recordalignmin);
|
||||
{$ifdef llvm}
|
||||
@ -906,8 +901,6 @@ implementation
|
||||
old_current_structdef:=current_structdef;
|
||||
current_structdef:=_class;
|
||||
|
||||
_class.resetvmtentries;
|
||||
|
||||
{ inherit (copy) VMT from parent object }
|
||||
if assigned(_class.childof) then
|
||||
_class.copyvmtentries(_class.childof);
|
||||
|
@ -493,7 +493,6 @@ interface
|
||||
procedure buildderef;override;
|
||||
procedure deref;override;
|
||||
procedure derefimpl;override;
|
||||
procedure resetvmtentries;
|
||||
procedure copyvmtentries(objdef:tobjectdef);
|
||||
function getparentdef:tdef;override;
|
||||
function size : asizeint;override;
|
||||
@ -7267,6 +7266,8 @@ implementation
|
||||
|
||||
|
||||
destructor tobjectdef.destroy;
|
||||
var
|
||||
i: longint;
|
||||
begin
|
||||
if assigned(symtable) then
|
||||
begin
|
||||
@ -7287,7 +7288,8 @@ implementation
|
||||
end;
|
||||
if assigned(vmtentries) then
|
||||
begin
|
||||
resetvmtentries;
|
||||
for i:=0 to vmtentries.count-1 do
|
||||
dispose(pvmtentry(vmtentries[i]));
|
||||
vmtentries.free;
|
||||
vmtentries:=nil;
|
||||
end;
|
||||
@ -7532,22 +7534,13 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
procedure tobjectdef.resetvmtentries;
|
||||
var
|
||||
i : longint;
|
||||
begin
|
||||
for i:=0 to vmtentries.Count-1 do
|
||||
Dispose(pvmtentry(vmtentries[i]));
|
||||
vmtentries.clear;
|
||||
end;
|
||||
|
||||
|
||||
procedure tobjectdef.copyvmtentries(objdef:tobjectdef);
|
||||
var
|
||||
i : longint;
|
||||
vmtentry : pvmtentry;
|
||||
begin
|
||||
resetvmtentries;
|
||||
if vmtentries.count<>0 then
|
||||
internalerror(2019081401);
|
||||
vmtentries.count:=objdef.vmtentries.count;
|
||||
for i:=0 to objdef.vmtentries.count-1 do
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user