+ RegisterTinyHeapBlock: align the start address and size according to

TinyHeapAllocGranularity

git-svn-id: trunk@28418 -
This commit is contained in:
nickysn 2014-08-15 16:10:22 +00:00
parent 815bfe0dcf
commit 902c25fafa

View File

@ -261,17 +261,16 @@
end;
procedure RegisterTinyHeapBlock(AAddress: pointer; ASize: ptruint);
var
alignment_inc: smallint;
begin
{$ifdef DEBUG_TINY_HEAP}
Writeln('RegisterTinyHeapBlock(', ptruint(AAddress), ',', ASize, ')');
{$endif DEBUG_TINY_HEAP}
if (ptruint(AAddress) and 1) <> 0 then
begin
Inc(AAddress);
Dec(ASize);
end;
if (ASize and 1) <> 0 then
Dec(ASize);
alignment_inc := TTinyHeapPointerArithmeticType(align(AAddress,TinyHeapAllocGranularity))-TTinyHeapPointerArithmeticType(AAddress);
Inc(AAddress,alignment_inc);
Dec(ASize,alignment_inc);
Dec(ASize,ASize mod TinyHeapAllocGranularity);
PTinyHeapMemBlockSize(AAddress)^ := ASize - SizeOf(TTinyHeapMemBlockSize);
FreeMem(Pointer(PTinyHeapMemBlockSize(AAddress) + 1), ASize - SizeOf(TTinyHeapMemBlockSize));
end;