mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-01 15:39:45 +02:00
Use FPC_NO_DEFAULT_MEMORYMANAGER define to guard SysGetmem/SysFreemem functions, also used for msdos OS
git-svn-id: trunk@33678 -
This commit is contained in:
parent
c8ad916710
commit
effa0154c5
@ -18,7 +18,7 @@
|
||||
{ $define HAS_MEMORYMANAGER}
|
||||
|
||||
{ Memory manager }
|
||||
{$ifndef EMBEDDED}
|
||||
{$ifndef FPC_NO_DEFAULT_MEMORYMANAGER}
|
||||
const
|
||||
MemoryManager: TMemoryManager = (
|
||||
NeedLock: false; // Obsolete
|
||||
@ -34,7 +34,7 @@ const
|
||||
GetHeapStatus: {$ifndef FPC_NO_DEFAULT_HEAP}@SysGetHeapStatus{$else}nil{$endif};
|
||||
GetFPCHeapStatus: {$ifndef FPC_NO_DEFAULT_HEAP}@SysGetFPCHeapStatus{$else}nil{$endif};
|
||||
);
|
||||
{$else}
|
||||
{$else not FPC_NO_DEFAULT_MEMORYMANAGER}
|
||||
{$ifndef FPC_IN_HEAPMGR}
|
||||
const
|
||||
MemoryManager: TMemoryManager = (
|
||||
@ -52,7 +52,7 @@ const
|
||||
GetFPCHeapStatus: nil;
|
||||
);public name 'FPC_SYSTEM_MEMORYMANAGER';
|
||||
{$endif FPC_IN_HEAPMGR}
|
||||
{$endif EMBEDDED}
|
||||
{$endif not FPC_NO_DEFAULT_MEMORYMANAGER}
|
||||
|
||||
|
||||
{ Try to find the best matching block in general freelist }
|
||||
@ -62,7 +62,7 @@ const
|
||||
{ define DUMPGROW}
|
||||
|
||||
{ Memory profiling: at moment in time of max heap size usage,
|
||||
keep statistics of number of each size allocated
|
||||
keep statistics of number of each size allocated
|
||||
(with 16 byte granularity) }
|
||||
{ define DUMP_MEM_USAGE}
|
||||
|
||||
@ -131,9 +131,9 @@ const
|
||||
of user freeing/allocing same or a small set of sizes, we only do
|
||||
the conversion to the new fixed os chunk size format after we
|
||||
reuse the os chunk for another fixed size, or variable. Note that
|
||||
while the fixed size os chunk is on the freelists.oslist, it is also
|
||||
still present in a freelists.fixedlists, therefore we can easily remove
|
||||
the os chunk from the freelists.oslist if this size is needed again; we
|
||||
while the fixed size os chunk is on the freelists.oslist, it is also
|
||||
still present in a freelists.fixedlists, therefore we can easily remove
|
||||
the os chunk from the freelists.oslist if this size is needed again; we
|
||||
don't need to search freelists.oslist in alloc_oschunk, since it won't
|
||||
be present anymore if alloc_oschunk is reached. Note that removing
|
||||
from the freelists.oslist is not really done, only the recycleflag is
|
||||
@ -212,9 +212,9 @@ type
|
||||
end;
|
||||
|
||||
const
|
||||
fixedfirstoffset = ((sizeof(toschunk) + sizeof(tmemchunk_fixed_hdr) + $f)
|
||||
fixedfirstoffset = ((sizeof(toschunk) + sizeof(tmemchunk_fixed_hdr) + $f)
|
||||
and not $f) - sizeof(tmemchunk_fixed_hdr);
|
||||
varfirstoffset = ((sizeof(toschunk) + sizeof(tmemchunk_var_hdr) + $f)
|
||||
varfirstoffset = ((sizeof(toschunk) + sizeof(tmemchunk_var_hdr) + $f)
|
||||
and not $f) - sizeof(tmemchunk_var_hdr);
|
||||
{$ifdef BESTMATCH}
|
||||
matcheffort = high(longint);
|
||||
@ -265,8 +265,12 @@ begin
|
||||
{$ifdef HAS_MEMORYMANAGER}
|
||||
Result:=false;
|
||||
{$else HAS_MEMORYMANAGER}
|
||||
IsMemoryManagerSet := (MemoryManager.GetMem<>@SysGetMem)
|
||||
{$ifdef FPC_NO_DEFAULT_MEMORYMANAGER}
|
||||
Result:=false;
|
||||
{$else not FPC_NO_DEFAULT_MEMORYMANAGER}
|
||||
IsMemoryManagerSet := (MemoryManager.GetMem<>@SysGetMem)
|
||||
or (MemoryManager.FreeMem<>@SysFreeMem);
|
||||
{$endif notFPC_NO_DEFAULT_MEMORYMANAGER}
|
||||
{$endif HAS_MEMORYMANAGER}
|
||||
end;
|
||||
|
||||
@ -362,7 +366,8 @@ end;
|
||||
{$endif FPC_IN_HEAPMGR}
|
||||
|
||||
{$if defined(FPC_HAS_FEATURE_HEAP) or defined(FPC_IN_HEAPMGR)}
|
||||
{$ifndef HAS_MEMORYMANAGER}
|
||||
{$ifndef FPC_NO_DEFAULT_HEAP}
|
||||
|
||||
{*****************************************************************************
|
||||
GetHeapStatus
|
||||
*****************************************************************************}
|
||||
@ -457,7 +462,7 @@ end;
|
||||
|
||||
{$ifdef HEAP_DEBUG}
|
||||
|
||||
function find_fixed_mc(loc_freelists: pfreelists; chunkindex: ptruint;
|
||||
function find_fixed_mc(loc_freelists: pfreelists; chunkindex: ptruint;
|
||||
pmc: pmemchunk_fixed): boolean;
|
||||
var
|
||||
pmc_temp: pmemchunk_fixed;
|
||||
@ -715,7 +720,7 @@ end;
|
||||
Grow Heap
|
||||
*****************************************************************************}
|
||||
|
||||
function find_free_oschunk(loc_freelists: pfreelists;
|
||||
function find_free_oschunk(loc_freelists: pfreelists;
|
||||
minsize, maxsize: ptruint; var size: ptruint): poschunk;
|
||||
var
|
||||
prev_poc, poc: poschunk;
|
||||
@ -982,9 +987,9 @@ begin
|
||||
if currheapused > maxheapused then
|
||||
begin
|
||||
maxheapused := currheapused;
|
||||
{$ifdef DUMP_MEM_USAGE}
|
||||
{$ifdef DUMP_MEM_USAGE}
|
||||
maxsizeusage := sizeusage;
|
||||
{$endif}
|
||||
{$endif}
|
||||
end;
|
||||
end;
|
||||
inc(poc^.used);
|
||||
@ -1051,9 +1056,9 @@ begin
|
||||
if currheapused > maxheapused then
|
||||
begin
|
||||
maxheapused := currheapused;
|
||||
{$ifdef DUMP_MEM_USAGE}
|
||||
{$ifdef DUMP_MEM_USAGE}
|
||||
maxsizeusage := sizeusage;
|
||||
{$endif}
|
||||
{$endif}
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -1233,7 +1238,7 @@ end;
|
||||
|
||||
function try_finish_waitfixedlist(loc_freelists: pfreelists): boolean;
|
||||
begin
|
||||
if loc_freelists^.waitfixed = nil then
|
||||
if loc_freelists^.waitfixed = nil then
|
||||
exit(false);
|
||||
{$ifdef FPC_HAS_FEATURE_THREADING}
|
||||
entercriticalsection(heap_lock);
|
||||
@ -1261,7 +1266,7 @@ end;
|
||||
|
||||
procedure try_finish_waitvarlist(loc_freelists: pfreelists);
|
||||
begin
|
||||
if loc_freelists^.waitvar = nil then
|
||||
if loc_freelists^.waitvar = nil then
|
||||
exit;
|
||||
{$ifdef FPC_HAS_FEATURE_THREADING}
|
||||
entercriticalsection(heap_lock);
|
||||
@ -1490,7 +1495,7 @@ begin
|
||||
SysReAllocMem := p;
|
||||
end;
|
||||
|
||||
{$endif HAS_MEMORYMANAGER}
|
||||
{$endif FPC_NO_DEFAULT_HEAP}
|
||||
|
||||
{$ifndef HAS_MEMORYMANAGER}
|
||||
|
||||
@ -1498,6 +1503,7 @@ end;
|
||||
InitHeap
|
||||
*****************************************************************************}
|
||||
|
||||
{$ifndef FPC_NO_DEFAULT_HEAP}
|
||||
{ This function will initialize the Heap manager and need to be called from
|
||||
the initialization of the system unit }
|
||||
{$ifdef FPC_HAS_FEATURE_THREADING}
|
||||
@ -1617,7 +1623,7 @@ begin
|
||||
end;
|
||||
{$endif}
|
||||
{$ifdef SHOW_MEM_USAGE}
|
||||
writeln('Max heap used/size: ', loc_freelists^.internal_status.maxheapused, '/',
|
||||
writeln('Max heap used/size: ', loc_freelists^.internal_status.maxheapused, '/',
|
||||
loc_freelists^.internal_status.maxheapsize);
|
||||
flush(output);
|
||||
{$endif}
|
||||
@ -1630,6 +1636,8 @@ begin
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
{$endif ndef FPC_NO_DEFAULT_HEAP}
|
||||
|
||||
{$endif HAS_MEMORYMANAGER}
|
||||
{$endif defined(FPC_HAS_FEATURE_HEAP) or defined(FPC_IN_HEAPMGR)}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user