mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-07 23:06:11 +02:00
* disable vtentry code until a clean implementation is done
git-svn-id: trunk@3934 -
This commit is contained in:
parent
4c065bce45
commit
722c91e8f3
@ -894,6 +894,7 @@ implementation
|
|||||||
not(is_cppclass(tprocdef(procdefinition)._class)) then
|
not(is_cppclass(tprocdef(procdefinition)._class)) then
|
||||||
cg.g_maybe_testvmt(current_asmdata.CurrAsmList,vmtreg,tprocdef(procdefinition)._class);
|
cg.g_maybe_testvmt(current_asmdata.CurrAsmList,vmtreg,tprocdef(procdefinition)._class);
|
||||||
|
|
||||||
|
{$ifdef vtentry}
|
||||||
{ Call through VMT, generate a VTREF symbol to notify the linker }
|
{ Call through VMT, generate a VTREF symbol to notify the linker }
|
||||||
vmtoffset:=tprocdef(procdefinition)._class.vmtmethodoffset(tprocdef(procdefinition).extnumber);
|
vmtoffset:=tprocdef(procdefinition)._class.vmtmethodoffset(tprocdef(procdefinition).extnumber);
|
||||||
if not is_interface(tprocdef(procdefinition)._class) then
|
if not is_interface(tprocdef(procdefinition)._class) then
|
||||||
@ -901,6 +902,7 @@ implementation
|
|||||||
inc(current_asmdata.NextVTEntryNr);
|
inc(current_asmdata.NextVTEntryNr);
|
||||||
current_asmdata.CurrAsmList.Concat(tai_symbol.CreateName('VTREF'+tostr(current_asmdata.NextVTEntryNr)+'_'+tprocdef(procdefinition)._class.vmt_mangledname+'$$'+tostr(vmtoffset div sizeof(aint)),AT_FUNCTION,0));
|
current_asmdata.CurrAsmList.Concat(tai_symbol.CreateName('VTREF'+tostr(current_asmdata.NextVTEntryNr)+'_'+tprocdef(procdefinition)._class.vmt_mangledname+'$$'+tostr(vmtoffset div sizeof(aint)),AT_FUNCTION,0));
|
||||||
end;
|
end;
|
||||||
|
{$endif vtentry}
|
||||||
|
|
||||||
reference_reset_base(href,vmtreg,vmtoffset);
|
reference_reset_base(href,vmtreg,vmtoffset);
|
||||||
|
|
||||||
|
@ -1234,8 +1234,10 @@ implementation
|
|||||||
else
|
else
|
||||||
procname:=procdefcoll^.data.mangledname;
|
procname:=procdefcoll^.data.mangledname;
|
||||||
List.concat(Tai_const.createname(procname,0));
|
List.concat(Tai_const.createname(procname,0));
|
||||||
|
{$ifdef vtentry}
|
||||||
hs:='VTENTRY'+'_'+_class.vmt_mangledname+'$$'+tostr(_class.vmtmethodoffset(i) div sizeof(aint));
|
hs:='VTENTRY'+'_'+_class.vmt_mangledname+'$$'+tostr(_class.vmtmethodoffset(i) div sizeof(aint));
|
||||||
current_asmdata.asmlists[al_globals].concat(tai_symbol.CreateName(hs,AT_DATA,0));
|
current_asmdata.asmlists[al_globals].concat(tai_symbol.CreateName(hs,AT_DATA,0));
|
||||||
|
{$endif vtentry}
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
procdefcoll:=procdefcoll^.next;
|
procdefcoll:=procdefcoll^.next;
|
||||||
@ -1358,6 +1360,7 @@ implementation
|
|||||||
current_asmdata.asmlists[al_globals].concat(Tai_const.create(aitconst_ptr,0));
|
current_asmdata.asmlists[al_globals].concat(Tai_const.create(aitconst_ptr,0));
|
||||||
{ write the size of the VMT }
|
{ write the size of the VMT }
|
||||||
current_asmdata.asmlists[al_globals].concat(Tai_symbol_end.Createname(_class.vmt_mangledname));
|
current_asmdata.asmlists[al_globals].concat(Tai_symbol_end.Createname(_class.vmt_mangledname));
|
||||||
|
{$ifdef vtentry}
|
||||||
{ write vtinherit symbol to notify the linker of the class inheritance tree }
|
{ write vtinherit symbol to notify the linker of the class inheritance tree }
|
||||||
hs:='VTINHERIT'+'_'+_class.vmt_mangledname+'$$';
|
hs:='VTINHERIT'+'_'+_class.vmt_mangledname+'$$';
|
||||||
if assigned(_class.childof) then
|
if assigned(_class.childof) then
|
||||||
@ -1365,6 +1368,7 @@ implementation
|
|||||||
else
|
else
|
||||||
hs:=hs+_class.vmt_mangledname;
|
hs:=hs+_class.vmt_mangledname;
|
||||||
current_asmdata.asmlists[al_globals].concat(tai_symbol.CreateName(hs,AT_DATA,0));
|
current_asmdata.asmlists[al_globals].concat(tai_symbol.CreateName(hs,AT_DATA,0));
|
||||||
|
{$endif vtentry}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user