+ createheap/restoreheap procedures (only tp7 rm currently) and support

for tp7 dpmi
This commit is contained in:
peter 1998-08-11 21:38:24 +00:00
parent a5ce9c3c13
commit c0110b4ba2

View File

@ -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