* some memory leaks fixed (thanks to Peter for heaptrc !)

This commit is contained in:
pierre 1998-10-06 17:16:31 +00:00
parent 0bccbc5fde
commit 3048845e68
20 changed files with 153 additions and 23 deletions

View File

@ -294,6 +294,7 @@ type
{ label functions }
const
nextlabelnr : longint = 1;
countlabelref : boolean = true;
{ convert label to string}
function lab2str(l : plabel) : string;
{ make l as a new label }
@ -793,7 +794,9 @@ uses
else
lab2str:=target_asm.labelprefix+tostr(l^.nb);
end;
inc(l^.refcount);
{ inside the WriteTree we must not count the refs PM }
if countlabelref then
inc(l^.refcount);
l^.is_used:=true;
end;
@ -872,7 +875,10 @@ uses
end.
{
$Log$
Revision 1.19 1998-10-01 20:19:11 jonas
Revision 1.20 1998-10-06 17:16:31 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.19 1998/10/01 20:19:11 jonas
+ ait_marker support
Revision 1.18 1998/09/20 17:11:25 jonas

View File

@ -558,6 +558,7 @@ ait_stab_function_name : ;
AsmWriteLn(#9'ASSUME'#9'CS:_CODE,ES:DGROUP,DS:DGROUP,SS:DGROUP');
AsmLn;
countlabelref:=false;
WriteTree(externals);
{ INTEL ASM doesn't support stabs
WriteTree(debuglist);}
@ -567,6 +568,7 @@ ait_stab_function_name : ;
WriteTree(consts);
WriteTree(rttilist);
WriteTree(bsssegment);
countlabelref:=true;
AsmWriteLn(#9'END');
AsmLn;
@ -580,7 +582,10 @@ ait_stab_function_name : ;
end.
{
$Log$
Revision 1.15 1998-10-01 20:19:06 jonas
Revision 1.16 1998-10-06 17:16:33 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.15 1998/10/01 20:19:06 jonas
+ ait_marker support
Revision 1.14 1998/09/20 17:11:21 jonas

View File

@ -551,6 +551,7 @@ ait_stab_function_name : ;
AsmWriteLn('BITS 32');
AsmLn;
countlabelref:=false;
WriteTree(externals);
{ Nasm doesn't support stabs
WriteTree(debuglist);}
@ -560,6 +561,7 @@ ait_stab_function_name : ;
WriteTree(consts);
WriteTree(rttilist);
WriteTree(bsssegment);
countlabelref:=true;
AsmLn;
{$ifdef EXTDEBUG}
@ -571,7 +573,10 @@ ait_stab_function_name : ;
end.
{
$Log$
Revision 1.9 1998-10-01 20:19:07 jonas
Revision 1.10 1998-10-06 17:16:34 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.9 1998/10/01 20:19:07 jonas
+ ait_marker support
Revision 1.8 1998/09/20 17:11:22 jonas

View File

@ -641,6 +641,7 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
{$endif GDB}
AsmStartSize:=AsmSize;
countlabelref:=false;
{ there should be nothing but externals so we don't need to process
WriteTree(externals); }
@ -653,6 +654,7 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
Writetree(importssection);
Writetree(exportssection);
Writetree(resourcesection);
countlabelref:=true;
AsmLn;
{$ifdef EXTDEBUG}
@ -664,7 +666,10 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
end.
{
$Log$
Revision 1.13 1998-10-01 20:19:08 jonas
Revision 1.14 1998-10-06 17:16:36 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.13 1998/10/01 20:19:08 jonas
+ ait_marker support
Revision 1.12 1998/09/28 16:57:09 pierre

View File

@ -619,6 +619,7 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
{ to get symify to work }
AsmWriteLn(#9'.file "'+FixFileName(n+e)+'"');
countlabelref:=false;
{ there should be nothing but externals so we don't need to process
WriteTree(externals); }
@ -631,6 +632,7 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
Writetree(importssection);
Writetree(exportssection);
Writetree(resourcesection);
countlabelref:=true;
AsmLn;
{$ifdef EXTDEBUG}
@ -642,7 +644,10 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
end.
{
$Log$
Revision 1.11 1998-10-01 20:19:09 jonas
Revision 1.12 1998-10-06 17:16:37 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.11 1998/10/01 20:19:09 jonas
+ ait_marker support
Revision 1.10 1998/09/28 16:57:11 pierre

View File

@ -500,6 +500,7 @@ ait_labeled_instruction :
comment(v_info,'Start writing motorola-styled assembler output for '+current_module^.mainsource^);
{$endif}
countlabelref:=false;
WriteTree(externals);
{ WriteTree(debuglist);}
WriteTree(codesegment);
@ -510,6 +511,7 @@ ait_labeled_instruction :
Writetree(importssection);
Writetree(exportssection);
Writetree(resourcesection);
countlabelref:=true;
AsmLn;
AsmWriteLn(#9'END');
@ -524,7 +526,10 @@ ait_labeled_instruction :
end.
{
$Log$
Revision 1.9 1998-10-01 20:19:10 jonas
Revision 1.10 1998-10-06 17:16:38 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.9 1998/10/01 20:19:10 jonas
+ ait_marker support
Revision 1.8 1998/09/16 01:08:08 carl

View File

@ -580,6 +580,8 @@ implementation
{$endif SUPPORT_MMX}
end;
end;
freelabel(truelabel);
freelabel(falselabel);
truelabel:=otlabel;
falselabel:=oflabel;
{ push from right to left }
@ -1442,6 +1444,8 @@ implementation
addr_correction:=-addr_correction;
st^.foreach(correct_address);
aktprocsym:=oldprocsym;
freelabel(aktexitlabel);
freelabel(aktexit2label);
aktexitlabel:=oldexitlabel;
aktexit2label:=oldexit2label;
quickexitlabel:=oldquickexitlabel;
@ -1453,7 +1457,10 @@ implementation
end.
{
$Log$
Revision 1.32 1998-10-01 09:22:52 peter
Revision 1.33 1998-10-06 17:16:39 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.32 1998/10/01 09:22:52 peter
* fixed value openarray
* ungettemp of arrayconstruct

View File

@ -983,6 +983,8 @@ implementation
else
internalerror(10061);
end;
freelabel(truelabel);
freelabel(falselabel);
truelabel:=oldtruelabel;
falselabel:=oldfalselabel;
end;
@ -1310,7 +1312,10 @@ implementation
end.
{
$Log$
Revision 1.26 1998-10-02 07:20:35 florian
Revision 1.27 1998-10-06 17:16:40 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.26 1998/10/02 07:20:35 florian
* range checking in units doesn't work if the units are smartlinked, fixed
Revision 1.25 1998/09/30 12:14:24 peter

View File

@ -97,6 +97,9 @@ implementation
secondpass(p^.left);
maketojumpbool(p^.left);
emitl(A_LABEL,lbreak);
freelabel(lloop);
freelabel(lcont);
freelabel(lbreak);
truelabel:=otlabel;
falselabel:=oflabel;
@ -145,6 +148,8 @@ implementation
emitl(A_LABEL,falselabel);
if not(assigned(p^.right)) then
emitl(A_LABEL,truelabel);
freelabel(truelabel);
freelabel(falselabel);
truelabel:=otlabel;
falselabel:=oflabel;
end;
@ -346,6 +351,9 @@ implementation
if temptovalue then
ungetiftemp(temp1);
freelabel(aktcontinuelabel);
freelabel(aktbreaklabel);
freelabel(l3);
aktcontinuelabel:=oldclabel;
aktbreaklabel:=oldblabel;
end;
@ -436,6 +444,8 @@ implementation
end;
end;
do_jmp:
freelabel(truelabel);
freelabel(falselabel);
truelabel:=otlabel;
falselabel:=oflabel;
emitl(A_JMP,aktexit2label);
@ -609,6 +619,10 @@ do_jmp:
else
emitcall('FPC_RERAISE',true);
emitl(A_LABEL,endexceptlabel);
freelabel(exceptlabel);
freelabel(doexceptlabel);
freelabel(endexceptlabel);
freelabel(lastonlabel);
endexceptlabel:=oldendexceptlabel;
end;
@ -724,7 +738,10 @@ do_jmp:
end.
{
$Log$
Revision 1.19 1998-09-28 12:13:53 peter
Revision 1.20 1998-10-06 17:16:42 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.19 1998/09/28 12:13:53 peter
* fixed repeat continue until true;
Revision 1.18 1998/09/26 15:03:04 florian

View File

@ -508,6 +508,8 @@ implementation
newreference(p^.left^.location.reference))));
end;
end;
freelabel(truelabel);
freelabel(falselabel);
truelabel:=otlabel;
falselabel:=oflabel;
end;
@ -731,7 +733,10 @@ implementation
end.
{
$Log$
Revision 1.22 1998-10-01 09:22:53 peter
Revision 1.23 1998-10-06 17:16:44 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.22 1998/10/01 09:22:53 peter
* fixed value openarray
* ungettemp of arrayconstruct

View File

@ -120,7 +120,11 @@ begin
exit;
{ Free memory }
DoneSymtable;
DoneGlobals;
linker.done;
CompilerInited:=false;
doneparser;
DoneImport;
end;
@ -212,13 +216,18 @@ begin
Compile:=0
else
Compile:=1;
{ no message possible after this !! }
DoneVerbose;
end;
end.
{
$Log$
Revision 1.8 1998-09-01 09:00:27 peter
Revision 1.9 1998-10-06 17:16:46 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.8 1998/09/01 09:00:27 peter
- removed tempheap creation/restore
Revision 1.7 1998/09/01 07:54:17 pierre

View File

@ -185,7 +185,7 @@ unit files;
implementation
uses
dos,verbose,systems;
dos,verbose,symtable,systems;
{****************************************************************************
TINPUTFILE
@ -882,6 +882,8 @@ unit files;
stringdispose(modulename);
stringdispose(mainsource);
stringdispose(asmprefix);
if assigned(symtable) then
dispose(punitsymtable(symtable),done);
inherited done;
end;
@ -925,7 +927,10 @@ unit files;
end.
{
$Log$
Revision 1.50 1998-09-30 16:43:34 peter
Revision 1.51 1998-10-06 17:16:47 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.50 1998/09/30 16:43:34 peter
* fixed unit interdependency with circular uses
Revision 1.49 1998/09/28 16:57:20 pierre

View File

@ -273,6 +273,7 @@ implementation
dispose(datasegment,done);
dispose(debuglist,done);
dispose(externals,done);
dispose(internals,done);
dispose(consts,done);
dispose(rttilist,done);
if assigned(importssection) then
@ -383,7 +384,10 @@ end.
{
$Log$
Revision 1.17 1998-09-17 09:42:37 peter
Revision 1.18 1998-10-06 17:16:50 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.17 1998/09/17 09:42:37 peter
+ pass_2 for cg386
* Message() -> CGMessage() for pass_1/pass_2

View File

@ -56,6 +56,7 @@ var
importlib : pimportlib;
procedure InitImport;
procedure DoneImport;
implementation
@ -137,6 +138,12 @@ begin
end;
procedure DoneImport;
begin
if assigned(importlib) then
dispose(importlib,done);
end;
procedure InitImport;
begin
{$ifdef i386}
@ -156,7 +163,10 @@ end;
end.
{
$Log$
Revision 1.4 1998-09-30 12:16:47 peter
Revision 1.5 1998-10-06 17:16:51 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.4 1998/09/30 12:16:47 peter
* remove extension if one is specified
Revision 1.3 1998/06/04 23:51:43 peter

View File

@ -119,6 +119,9 @@ end;
Destructor TLinker.Done;
begin
ObjectFiles.Done;
SharedLibFiles.Done;
StaticLibFiles.Done;
end;
@ -502,7 +505,10 @@ end;
end.
{
$Log$
Revision 1.26 1998-09-29 15:23:05 peter
Revision 1.27 1998-10-06 17:16:52 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.26 1998/09/29 15:23:05 peter
* remove also the end files for smartlinking
Revision 1.25 1998/09/10 15:25:31 daniel

View File

@ -29,6 +29,7 @@ unit parser;
procedure compile(const filename:string;compile_system:boolean);
procedure initparser;
procedure doneparser;
implementation
@ -76,6 +77,11 @@ unit parser;
stacksize:=target_info.stacksize;
end;
procedure doneparser;
begin
loaded_units.done;
usedunits.done;
end;
procedure default_macros;
var
@ -361,7 +367,10 @@ unit parser;
end.
{
$Log$
Revision 1.54 1998-10-05 21:33:23 peter
Revision 1.55 1998-10-06 17:16:53 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.54 1998/10/05 21:33:23 peter
* fixed 161,165,166,167,168
Revision 1.53 1998/09/30 16:43:36 peter

View File

@ -880,6 +880,7 @@ unit pmodules;
end;
consume(SEMICOLON);
end;
{ global switches are read, so further changes aren't allowed }
current_module^.in_global:=false;
{ set implementation flag }
@ -1001,7 +1002,10 @@ unit pmodules;
end.
{
$Log$
Revision 1.59 1998-10-05 21:33:26 peter
Revision 1.60 1998-10-06 17:16:54 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.59 1998/10/05 21:33:26 peter
* fixed 161,165,166,167,168
Revision 1.58 1998/09/30 16:43:37 peter

View File

@ -2207,6 +2207,8 @@
dispose(parast,done);
if assigned(localst) then
dispose(localst,done);
if assigned(code) and ((options and poinline) <> 0) then
disposetree(ptree(code));
if
{$ifdef tp}
not(use_big) and
@ -3073,7 +3075,10 @@
{
$Log$
Revision 1.54 1998-10-05 21:33:28 peter
Revision 1.55 1998-10-06 17:16:55 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.54 1998/10/05 21:33:28 peter
* fixed 161,165,166,167,168
Revision 1.53 1998/10/05 12:48:39 pierre

View File

@ -1596,7 +1596,7 @@
begin
if definition^.sym=nil then
definition^.sym:=@self;
if definition^.deftype=recorddef then
if (definition^.deftype=recorddef) and assigned(precdef(definition)^.symtable) then
precdef(definition)^.symtable^.name:=stringdup('record '+name);
end;
end;
@ -1719,7 +1719,10 @@
{
$Log$
Revision 1.49 1998-10-01 09:22:55 peter
Revision 1.50 1998-10-06 17:16:56 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.49 1998/10/01 09:22:55 peter
* fixed value openarray
* ungettemp of arrayconstruct

View File

@ -77,6 +77,7 @@ procedure Message2(w:tmsgconst;const s1,s2:string);
procedure Message3(w:tmsgconst;const s1,s2,s3:string);
procedure InitVerbose;
procedure DoneVerbose;
implementation
@ -403,6 +404,12 @@ begin
Status.MaxErrorCount:=50;
end;
procedure DoneVerbose;
begin
if not(msg=nil) then
dispose(msg,Done);
end;
begin
{$ifndef EXTERN_MSG}
msg:=new(pmessage,Init(@msgtxt,ord(endmsgconst)));
@ -413,7 +420,10 @@ end.
{
$Log$
Revision 1.22 1998-10-05 13:51:36 peter
Revision 1.23 1998-10-06 17:17:01 pierre
* some memory leaks fixed (thanks to Peter for heaptrc !)
Revision 1.22 1998/10/05 13:51:36 peter
* if maxerrorcount is reached display a msg
Revision 1.21 1998/09/28 16:57:30 pierre