* quicker finalization of dyn. arrays, thanks to the hint of Volker Zipfel

git-svn-id: trunk@11357 -
This commit is contained in:
florian 2008-07-10 16:44:45 +00:00
parent 930de03fae
commit f56b741948
2 changed files with 7 additions and 5 deletions

View File

@ -470,7 +470,7 @@ Procedure fpc_Initialize (Data,TypeInfo : pointer); compilerproc;
Procedure fpc_finalize (Data,TypeInfo: Pointer); compilerproc;
Procedure fpc_Addref (Data,TypeInfo : Pointer); compilerproc;
Procedure fpc_DecRef (Data,TypeInfo : Pointer); compilerproc;
procedure fpc_finalize_array(data,typeinfo : pointer;count,size : longint); compilerproc;
procedure fpc_finalize_array(data,typeinfo : pointer;count,size : SizeInt); compilerproc;
Function fpc_Copy (Src, Dest, TypeInfo : Pointer) : SizeInt; compilerproc;
Procedure fpc_Copy_proc (Src, Dest, TypeInfo : Pointer); compilerproc; inline;
{$endif FPC_HAS_FEATURE_RTTI}

View File

@ -335,11 +335,13 @@ begin
end;
procedure fpc_finalize_array(data,typeinfo : pointer;count,size : longint); [Public,Alias:'FPC_FINALIZEARRAY']; compilerproc;
procedure fpc_finalize_array(data,typeinfo : pointer;count,size : SizeInt); [Public,Alias:'FPC_FINALIZEARRAY']; compilerproc;
var
i : longint;
i : SizeInt;
begin
for i:=0 to count-1 do
int_finalize(data+size*i,typeinfo);
if not(PByte(typeinfo)^ in [tkInteger,tkChar,tkEnumeration,tkFloat,tkSet,
tkMethod,tkSString,tkLString,tkWChar,tkBool,tkInt64,tkQWord]) then
for i:=0 to count-1 do
int_finalize(data+size*i,typeinfo);
end;