From c0110b4ba2f10bddb615d6c51ae4082684a4c5d7 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 11 Aug 1998 21:38:24 +0000 Subject: [PATCH] + createheap/restoreheap procedures (only tp7 rm currently) and support for tp7 dpmi --- compiler/compiler.pas | 89 ++++++++++++++++++++++++++++++++----------- 1 file changed, 67 insertions(+), 22 deletions(-) diff --git a/compiler/compiler.pas b/compiler/compiler.pas index 2ea7881e80..37c292e3c6 100644 --- a/compiler/compiler.pas +++ b/compiler/compiler.pas @@ -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