mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-23 00:09:31 +02:00
* some memory leaks fixed (thanks to Peter for heaptrc !)
This commit is contained in:
parent
0bccbc5fde
commit
3048845e68
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user