mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-18 11:49:14 +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}
|
{$define USEEXCEPT}
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
{$ifdef TP}
|
||||||
|
{$ifdef DPMI}
|
||||||
|
{$undef USEEXCEPT}
|
||||||
|
{$endif}
|
||||||
|
{$endif}
|
||||||
|
|
||||||
uses
|
uses
|
||||||
{$ifdef fpc}
|
{$ifdef fpc}
|
||||||
@ -92,7 +97,10 @@ implementation
|
|||||||
|
|
||||||
var
|
var
|
||||||
CompilerInited : boolean;
|
CompilerInited : boolean;
|
||||||
|
{$ifdef USEEXCEPT}
|
||||||
recoverpos : jmp_buf;
|
recoverpos : jmp_buf;
|
||||||
|
{$endif USEEXCEPT}
|
||||||
|
|
||||||
|
|
||||||
{$ifdef USEEXCEPT}
|
{$ifdef USEEXCEPT}
|
||||||
procedure RecoverStop;{$ifndef FPC}far;{$endif}
|
procedure RecoverStop;{$ifndef FPC}far;{$endif}
|
||||||
@ -102,6 +110,53 @@ end;
|
|||||||
{$endif USEEXCEPT}
|
{$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;
|
procedure DoneCompiler;
|
||||||
begin
|
begin
|
||||||
if not CompilerInited then
|
if not CompilerInited then
|
||||||
@ -146,29 +201,17 @@ var
|
|||||||
{$ifdef USEEXCEPT}
|
{$ifdef USEEXCEPT}
|
||||||
olddo_stop : tstopprocedure;
|
olddo_stop : tstopprocedure;
|
||||||
{$endif}
|
{$endif}
|
||||||
{$ifdef TP}
|
|
||||||
oldfreelist,
|
|
||||||
oldheapptr,
|
|
||||||
oldheaporg : pointer;
|
|
||||||
{$endif}
|
|
||||||
{$IfDef Extdebug}
|
{$IfDef Extdebug}
|
||||||
EntryMemAvail : longint;
|
EntryMemAvail : longint;
|
||||||
{$EndIf}
|
{$EndIf}
|
||||||
begin
|
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}
|
{$ifdef EXTDEBUG}
|
||||||
EntryMemAvail:=MemAvail;
|
EntryMemAvail:=MemAvail;
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
{ Get a new heap }
|
||||||
|
CreateHeap;
|
||||||
|
|
||||||
{ Initialize the compiler }
|
{ Initialize the compiler }
|
||||||
InitCompiler(cmd);
|
InitCompiler(cmd);
|
||||||
|
|
||||||
@ -209,12 +252,10 @@ begin
|
|||||||
{$ifdef EXTDEBUG}
|
{$ifdef EXTDEBUG}
|
||||||
Comment(V_Info,'Memory Lost = '+tostr(EntryMemAvail-MemAvail));
|
Comment(V_Info,'Memory Lost = '+tostr(EntryMemAvail-MemAvail));
|
||||||
{$endif EXTDEBUG}
|
{$endif EXTDEBUG}
|
||||||
{$Ifdef TP}
|
|
||||||
{ Restore old heap }
|
{ Restore Heap }
|
||||||
freelist:=oldfreelist;
|
RestoreHeap;
|
||||||
heapptr:=oldheapptr;
|
|
||||||
heaporg:=oldheaporg;
|
|
||||||
{$endIf TP}
|
|
||||||
{ Set the return value if an error has occurred }
|
{ Set the return value if an error has occurred }
|
||||||
if status.errorcount=0 then
|
if status.errorcount=0 then
|
||||||
Compile:=0
|
Compile:=0
|
||||||
@ -226,7 +267,11 @@ end;
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* fixed some messages and smaller msgtxt.inc
|
||||||
|
|
||||||
Revision 1.3 1998/08/11 00:01:20 peter
|
Revision 1.3 1998/08/11 00:01:20 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user