mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 12:49:20 +02:00
+ createheap/restoreheap procedures (only tp7 rm currently) and support
for tp7 dpmi
This commit is contained in:
parent
a5ce9c3c13
commit
c0110b4ba2
@ -67,6 +67,11 @@ interface
|
||||
{$define USEEXCEPT}
|
||||
{$endif}
|
||||
|
||||
{$ifdef TP}
|
||||
{$ifdef DPMI}
|
||||
{$undef USEEXCEPT}
|
||||
{$endif}
|
||||
{$endif}
|
||||
|
||||
uses
|
||||
{$ifdef fpc}
|
||||
@ -92,7 +97,10 @@ implementation
|
||||
|
||||
var
|
||||
CompilerInited : boolean;
|
||||
{$ifdef USEEXCEPT}
|
||||
recoverpos : jmp_buf;
|
||||
{$endif USEEXCEPT}
|
||||
|
||||
|
||||
{$ifdef USEEXCEPT}
|
||||
procedure RecoverStop;{$ifndef FPC}far;{$endif}
|
||||
@ -102,6 +110,53 @@ end;
|
||||
{$endif USEEXCEPT}
|
||||
|
||||
|
||||
{****************************************************************************
|
||||
Temp Heap Creation
|
||||
****************************************************************************}
|
||||
|
||||
{$ifdef TP}
|
||||
{$ifndef DPMI}
|
||||
var
|
||||
oldfreelist,
|
||||
oldheapptr,
|
||||
oldheaporg : pointer;
|
||||
{$endif}
|
||||
{$endif}
|
||||
|
||||
procedure CreateHeap;
|
||||
begin
|
||||
{$Ifdef TP}
|
||||
{$ifndef DPMI}
|
||||
{ Save old heap }
|
||||
oldfreelist:=freelist;
|
||||
oldheapptr:=heapptr;
|
||||
oldheaporg:=heaporg;
|
||||
{ Create a new heap }
|
||||
heaporg:=oldheapptr;
|
||||
heapptr:=heaporg;
|
||||
freelist:=heaporg;
|
||||
{$endif}
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
|
||||
procedure RestoreHeap;
|
||||
begin
|
||||
{$Ifdef TP}
|
||||
{$ifndef DPMI}
|
||||
{ Restore old heap }
|
||||
freelist:=oldfreelist;
|
||||
heapptr:=oldheapptr;
|
||||
heaporg:=oldheaporg;
|
||||
{$endif}
|
||||
{$endIf TP}
|
||||
end;
|
||||
|
||||
|
||||
{****************************************************************************
|
||||
Compiler
|
||||
****************************************************************************}
|
||||
|
||||
procedure DoneCompiler;
|
||||
begin
|
||||
if not CompilerInited then
|
||||
@ -146,29 +201,17 @@ var
|
||||
{$ifdef USEEXCEPT}
|
||||
olddo_stop : tstopprocedure;
|
||||
{$endif}
|
||||
{$ifdef TP}
|
||||
oldfreelist,
|
||||
oldheapptr,
|
||||
oldheaporg : pointer;
|
||||
{$endif}
|
||||
{$IfDef Extdebug}
|
||||
EntryMemAvail : longint;
|
||||
{$EndIf}
|
||||
begin
|
||||
{$Ifdef TP}
|
||||
{ Save old heap }
|
||||
oldfreelist:=freelist;
|
||||
oldheapptr:=heapptr;
|
||||
oldheaporg:=heaporg;
|
||||
{ Create a new heap }
|
||||
heaporg:=oldheapptr;
|
||||
heapptr:=heaporg;
|
||||
freelist:=heaporg;
|
||||
{$endif}
|
||||
{$ifdef EXTDEBUG}
|
||||
EntryMemAvail:=MemAvail;
|
||||
{$endif}
|
||||
|
||||
{ Get a new heap }
|
||||
CreateHeap;
|
||||
|
||||
{ Initialize the compiler }
|
||||
InitCompiler(cmd);
|
||||
|
||||
@ -209,12 +252,10 @@ begin
|
||||
{$ifdef EXTDEBUG}
|
||||
Comment(V_Info,'Memory Lost = '+tostr(EntryMemAvail-MemAvail));
|
||||
{$endif EXTDEBUG}
|
||||
{$Ifdef TP}
|
||||
{ Restore old heap }
|
||||
freelist:=oldfreelist;
|
||||
heapptr:=oldheapptr;
|
||||
heaporg:=oldheaporg;
|
||||
{$endIf TP}
|
||||
|
||||
{ Restore Heap }
|
||||
RestoreHeap;
|
||||
|
||||
{ Set the return value if an error has occurred }
|
||||
if status.errorcount=0 then
|
||||
Compile:=0
|
||||
@ -226,7 +267,11 @@ end;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.4 1998-08-11 14:09:06 peter
|
||||
Revision 1.5 1998-08-11 21:38:24 peter
|
||||
+ createheap/restoreheap procedures (only tp7 rm currently) and support
|
||||
for tp7 dpmi
|
||||
|
||||
Revision 1.4 1998/08/11 14:09:06 peter
|
||||
* fixed some messages and smaller msgtxt.inc
|
||||
|
||||
Revision 1.3 1998/08/11 00:01:20 peter
|
||||
|
Loading…
Reference in New Issue
Block a user