compiler: move current_objectdef variable to implementation of pdecobj and use explicit type conversion to tobjectdef in other places where current_objectdef is needed

git-svn-id: trunk@16660 -
This commit is contained in:
paul 2010-12-30 07:40:31 +00:00
parent ee78cf0f06
commit 2af416e145
4 changed files with 8 additions and 7 deletions

View File

@ -562,7 +562,7 @@ implementation
{ parameter 2 : pointer to vmt }
{ parameter 1 : self pointer }
para:=ccallparanode.create(
cordconstnode.create(current_objectdef.vmt_offset,s32inttype,false),
cordconstnode.create(tobjectdef(current_structdef).vmt_offset,s32inttype,false),
ccallparanode.create(
ctypeconvnode.create_internal(
load_vmt_pointer_node,

View File

@ -55,6 +55,8 @@ implementation
Declaring it as string here results in an error when compiling (PFV) }
current_procinfo = 'error';
var
current_objectdef : tobjectdef absolute current_structdef;
function class_constructor_head:tprocdef;
var

View File

@ -328,7 +328,7 @@ implementation
that memory was allocated }
{ parameter 1 : self pointer }
para:=ccallparanode.create(
cordconstnode.create(current_objectdef.vmt_offset,s32inttype,false),
cordconstnode.create(tobjectdef(current_structdef).vmt_offset,s32inttype,false),
ccallparanode.create(
ctypeconvnode.create_internal(
load_vmt_pointer_node,
@ -448,7 +448,7 @@ implementation
{ parameter 2 : pointer to vmt }
{ parameter 1 : self pointer }
para:=ccallparanode.create(
cordconstnode.create(current_objectdef.vmt_offset,s32inttype,false),
cordconstnode.create(tobjectdef(current_structdef).vmt_offset,s32inttype,false),
ccallparanode.create(
ctypeconvnode.create_internal(
load_vmt_pointer_node,
@ -643,11 +643,11 @@ implementation
internalerror(200305106);
end;
if withexceptblock then
if withexceptblock and (current_structdef.typ=objectdef) then
begin
{ Generate the implicit "fail" code for a constructor (destroy
in case an exception happened) }
pd:=current_objectdef.find_destructor;
pd:=tobjectdef(current_structdef).find_destructor;
{ this will always be the case for classes, since tobject has
a destructor }
if assigned(pd) then

View File

@ -642,12 +642,11 @@ interface
var
current_structdef: tabstractrecorddef; { used for private functions check !! }
current_objectdef : tobjectdef absolute current_structdef;
current_genericdef : tabstractrecorddef; { used to reject declaration of generic class inside generic class }
current_specializedef : tabstractrecorddef; { used to implement usage of generic class in itself }
{ default types }
generrordef, { error in definition }
generrordef, { error in definition }
voidpointertype, { pointer for Void-pointeddef }
charpointertype, { pointer for Char-pointeddef }
widecharpointertype, { pointer for WideChar-pointeddef }