* maybe_testvmt added

This commit is contained in:
peter 2003-01-30 21:46:35 +00:00
parent 2b0e576cbe
commit a3c3fb9282

View File

@ -41,7 +41,7 @@ unit cgobj;
cclasses,aasmbase,aasmtai,aasmcpu,symtable,
cpubase,cpuinfo,cpupara,
cginfo,
symconst,symbase,symtype,node
symconst,symbase,symtype,symdef,node
{$ifdef delphi}
,dmisc
{$endif}
@ -304,7 +304,8 @@ unit cgobj;
procedure g_maybe_loadself(list : taasmoutput);virtual;
procedure g_maybe_testself(list : taasmoutput);virtual;
procedure g_maybe_testself(list : taasmoutput;reg:tregister);
procedure g_maybe_testvmt(list : taasmoutput;reg:tregister;objdef:tobjectdef);
{# This should emit the opcode to copy len bytes from the source
to destination, if loadref is true, it assumes that it first must load
the source address from the memory location where
@ -499,7 +500,7 @@ unit cgobj;
uses
globals,globtype,options,systems,cgbase,
verbose,defutil,tgobj,symdef,paramgr,
verbose,defutil,tgobj,paramgr,
rgobj,cutils;
const
@ -1464,7 +1465,7 @@ unit cgobj;
end;
procedure tcg.g_maybe_testself(list : taasmoutput);
procedure tcg.g_maybe_testself(list : taasmoutput;reg:tregister);
var
OKLabel : tasmlabel;
dummyloc : tparalocation;
@ -1483,6 +1484,26 @@ unit cgobj;
end;
procedure tcg.g_maybe_testvmt(list : taasmoutput;reg:tregister;objdef:tobjectdef);
var
hrefvmt : treference;
begin
if (cs_check_object in aktlocalswitches) then
begin
reference_reset_symbol(hrefvmt,objectlibrary.newasmsymbol(objdef.vmt_mangledname),0);
a_paramaddr_ref(exprasmlist,hrefvmt,paramanager.getintparaloc(2));
a_param_reg(exprasmlist,OS_ADDR,reg,paramanager.getintparaloc(1));
a_call_name(exprasmlist,'FPC_CHECK_OBJECT_EXT');
end
else
if (cs_check_range in aktlocalswitches) then
begin
a_param_reg(exprasmlist,OS_ADDR,reg,paramanager.getintparaloc(1));
a_call_name(exprasmlist,'FPC_CHECK_OBJECT');
end;
end;
{*****************************************************************************
Entry/Exit Code Functions
*****************************************************************************}
@ -1705,7 +1726,10 @@ finalization
end.
{
$Log$
Revision 1.74 2003-01-17 12:45:40 daniel
Revision 1.75 2003-01-30 21:46:35 peter
* maybe_testvmt added
Revision 1.74 2003/01/17 12:45:40 daniel
* Fixed internalerror 200301081 problem
Revision 1.73 2003/01/13 14:54:34 daniel