mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 11:39:39 +02:00
* Removed not very usefull nextglobal & previousglobal fields from
Tstoreddef, saving 78 kb of memory
This commit is contained in:
parent
bba24d90b4
commit
42f9b1b0e2
@ -924,7 +924,7 @@ implementation
|
|||||||
current_module.globalsymtable:=current_module.localsymtable;
|
current_module.globalsymtable:=current_module.localsymtable;
|
||||||
current_module.localsymtable:=nil;
|
current_module.localsymtable:=nil;
|
||||||
|
|
||||||
reset_global_defs;
|
reset_all_defs;
|
||||||
|
|
||||||
{ number all units, so we know if a unit is used by this unit or
|
{ number all units, so we know if a unit is used by this unit or
|
||||||
needs to be added implicitly }
|
needs to be added implicitly }
|
||||||
@ -982,7 +982,7 @@ implementation
|
|||||||
exit;
|
exit;
|
||||||
|
|
||||||
{ reset ranges/stabs in exported definitions }
|
{ reset ranges/stabs in exported definitions }
|
||||||
reset_global_defs;
|
reset_all_defs;
|
||||||
|
|
||||||
{ All units are read, now give them a number }
|
{ All units are read, now give them a number }
|
||||||
current_module.numberunits;
|
current_module.numberunits;
|
||||||
@ -1094,7 +1094,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
|
|
||||||
reset_global_defs;
|
reset_all_defs;
|
||||||
|
|
||||||
if (Errorcount=0) then
|
if (Errorcount=0) then
|
||||||
begin
|
begin
|
||||||
@ -1277,7 +1277,7 @@ implementation
|
|||||||
loadunits;
|
loadunits;
|
||||||
|
|
||||||
{ reset ranges/stabs in exported definitions }
|
{ reset ranges/stabs in exported definitions }
|
||||||
reset_global_defs;
|
reset_all_defs;
|
||||||
|
|
||||||
{ All units are read, now give them a number }
|
{ All units are read, now give them a number }
|
||||||
current_module.numberunits;
|
current_module.numberunits;
|
||||||
@ -1438,7 +1438,11 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.138 2004-02-04 22:15:15 daniel
|
Revision 1.139 2004-02-06 22:37:00 daniel
|
||||||
|
* Removed not very usefull nextglobal & previousglobal fields from
|
||||||
|
Tstoreddef, saving 78 kb of memory
|
||||||
|
|
||||||
|
Revision 1.138 2004/02/04 22:15:15 daniel
|
||||||
* Rtti generation moved to ncgutil
|
* Rtti generation moved to ncgutil
|
||||||
* Assmtai usage of symsym removed
|
* Assmtai usage of symsym removed
|
||||||
* operator overloading cleanup up
|
* operator overloading cleanup up
|
||||||
|
@ -52,7 +52,9 @@ interface
|
|||||||
************************************************}
|
************************************************}
|
||||||
|
|
||||||
tstoreddef = class(tdef)
|
tstoreddef = class(tdef)
|
||||||
|
protected
|
||||||
typesymderef : tderef;
|
typesymderef : tderef;
|
||||||
|
public
|
||||||
{ persistent (available across units) rtti and init tables }
|
{ persistent (available across units) rtti and init tables }
|
||||||
rttitablesym,
|
rttitablesym,
|
||||||
inittablesym : tsym; {trttisym}
|
inittablesym : tsym; {trttisym}
|
||||||
@ -61,8 +63,6 @@ interface
|
|||||||
{ local (per module) rtti and init tables }
|
{ local (per module) rtti and init tables }
|
||||||
localrttilab : array[trttitype] of tasmlabel;
|
localrttilab : array[trttitype] of tasmlabel;
|
||||||
{ linked list of global definitions }
|
{ linked list of global definitions }
|
||||||
nextglobal,
|
|
||||||
previousglobal : tstoreddef;
|
|
||||||
{$ifdef EXTDEBUG}
|
{$ifdef EXTDEBUG}
|
||||||
fileinfo : tfileposinfo;
|
fileinfo : tfileposinfo;
|
||||||
{$endif}
|
{$endif}
|
||||||
@ -72,7 +72,7 @@ interface
|
|||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
constructor create;
|
constructor create;
|
||||||
constructor ppuloaddef(ppufile:tcompilerppufile);
|
constructor ppuloaddef(ppufile:tcompilerppufile);
|
||||||
destructor destroy;override;
|
procedure reset;
|
||||||
function getcopy : tstoreddef;virtual;
|
function getcopy : tstoreddef;virtual;
|
||||||
procedure ppuwritedef(ppufile:tcompilerppufile);
|
procedure ppuwritedef(ppufile:tcompilerppufile);
|
||||||
procedure ppuwrite(ppufile:tcompilerppufile);virtual;abstract;
|
procedure ppuwrite(ppufile:tcompilerppufile);virtual;abstract;
|
||||||
@ -680,10 +680,6 @@ interface
|
|||||||
|
|
||||||
var
|
var
|
||||||
aktobjectdef : tobjectdef; { used for private functions check !! }
|
aktobjectdef : tobjectdef; { used for private functions check !! }
|
||||||
|
|
||||||
firstglobaldef, { linked list of all globals defs }
|
|
||||||
lastglobaldef : tstoreddef; { used to reset stabs/ranges }
|
|
||||||
|
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
{ for STAB debugging }
|
{ for STAB debugging }
|
||||||
globaltypecount : word;
|
globaltypecount : word;
|
||||||
@ -793,8 +789,6 @@ interface
|
|||||||
function is_cppclass(def: tdef): boolean;
|
function is_cppclass(def: tdef): boolean;
|
||||||
function is_class_or_interface(def: tdef): boolean;
|
function is_class_or_interface(def: tdef): boolean;
|
||||||
|
|
||||||
procedure reset_global_defs;
|
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -923,18 +917,6 @@ implementation
|
|||||||
is_def_stab_written := not_written;
|
is_def_stab_written := not_written;
|
||||||
globalnb := 0;
|
globalnb := 0;
|
||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
if assigned(lastglobaldef) then
|
|
||||||
begin
|
|
||||||
lastglobaldef.nextglobal := self;
|
|
||||||
previousglobal:=lastglobaldef;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
firstglobaldef := self;
|
|
||||||
previousglobal := nil;
|
|
||||||
end;
|
|
||||||
lastglobaldef := self;
|
|
||||||
nextglobal := nil;
|
|
||||||
fillchar(localrttilab,sizeof(localrttilab),0);
|
fillchar(localrttilab,sizeof(localrttilab),0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -949,18 +931,6 @@ implementation
|
|||||||
is_def_stab_written := not_written;
|
is_def_stab_written := not_written;
|
||||||
globalnb := 0;
|
globalnb := 0;
|
||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
if assigned(lastglobaldef) then
|
|
||||||
begin
|
|
||||||
lastglobaldef.nextglobal := self;
|
|
||||||
previousglobal:=lastglobaldef;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
firstglobaldef := self;
|
|
||||||
previousglobal:=nil;
|
|
||||||
end;
|
|
||||||
lastglobaldef := self;
|
|
||||||
nextglobal := nil;
|
|
||||||
fillchar(localrttilab,sizeof(localrttilab),0);
|
fillchar(localrttilab,sizeof(localrttilab),0);
|
||||||
{ load }
|
{ load }
|
||||||
indexnr:=ppufile.getword;
|
indexnr:=ppufile.getword;
|
||||||
@ -973,31 +943,20 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
destructor tstoreddef.destroy;
|
procedure Tstoreddef.reset;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{ first element ? }
|
{$ifdef GDB}
|
||||||
if not(assigned(previousglobal)) then
|
if assigned(typesym) then
|
||||||
begin
|
ttypesym(typesym).isusedinstab:=false;
|
||||||
firstglobaldef := nextglobal;
|
is_def_stab_written:=not_written;
|
||||||
if assigned(firstglobaldef) then
|
{$endif GDB}
|
||||||
firstglobaldef.previousglobal:=nil;
|
if assigned(rttitablesym) then
|
||||||
end
|
trttisym(rttitablesym).lab := nil;
|
||||||
else
|
if assigned(inittablesym) then
|
||||||
begin
|
trttisym(inittablesym).lab := nil;
|
||||||
{ remove reference in the element before }
|
localrttilab[initrtti]:=nil;
|
||||||
previousglobal.nextglobal:=nextglobal;
|
localrttilab[fullrtti]:=nil;
|
||||||
end;
|
|
||||||
{ last element ? }
|
|
||||||
if not(assigned(nextglobal)) then
|
|
||||||
begin
|
|
||||||
lastglobaldef := previousglobal;
|
|
||||||
if assigned(lastglobaldef) then
|
|
||||||
lastglobaldef.nextglobal:=nil;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
nextglobal.previousglobal:=previousglobal;
|
|
||||||
previousglobal:=nil;
|
|
||||||
nextglobal:=nil;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function tstoreddef.getcopy : tstoreddef;
|
function tstoreddef.getcopy : tstoreddef;
|
||||||
@ -6058,40 +6017,6 @@ implementation
|
|||||||
Definition Helpers
|
Definition Helpers
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
|
|
||||||
procedure reset_global_defs;
|
|
||||||
var
|
|
||||||
def : tstoreddef;
|
|
||||||
{$ifdef debug}
|
|
||||||
prevdef : tstoreddef;
|
|
||||||
{$endif debug}
|
|
||||||
begin
|
|
||||||
{$ifdef debug}
|
|
||||||
prevdef:=nil;
|
|
||||||
{$endif debug}
|
|
||||||
{$ifdef GDB}
|
|
||||||
pglobaltypecount:=@globaltypecount;
|
|
||||||
{$endif GDB}
|
|
||||||
def:=firstglobaldef;
|
|
||||||
while assigned(def) do
|
|
||||||
begin
|
|
||||||
{$ifdef GDB}
|
|
||||||
if assigned(def.typesym) then
|
|
||||||
ttypesym(def.typesym).isusedinstab:=false;
|
|
||||||
def.is_def_stab_written:=not_written;
|
|
||||||
{$endif GDB}
|
|
||||||
if assigned(def.rttitablesym) then
|
|
||||||
trttisym(def.rttitablesym).lab := nil;
|
|
||||||
if assigned(def.inittablesym) then
|
|
||||||
trttisym(def.inittablesym).lab := nil;
|
|
||||||
def.localrttilab[initrtti]:=nil;
|
|
||||||
def.localrttilab[fullrtti]:=nil;
|
|
||||||
{$ifdef debug}
|
|
||||||
prevdef:=def;
|
|
||||||
{$endif debug}
|
|
||||||
def:=def.nextglobal;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function is_interfacecom(def: tdef): boolean;
|
function is_interfacecom(def: tdef): boolean;
|
||||||
begin
|
begin
|
||||||
is_interfacecom:=
|
is_interfacecom:=
|
||||||
@ -6152,7 +6077,11 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.215 2004-02-05 01:24:08 florian
|
Revision 1.216 2004-02-06 22:37:00 daniel
|
||||||
|
* Removed not very usefull nextglobal & previousglobal fields from
|
||||||
|
Tstoreddef, saving 78 kb of memory
|
||||||
|
|
||||||
|
Revision 1.215 2004/02/05 01:24:08 florian
|
||||||
* several fixes to compile x86-64 system
|
* several fixes to compile x86-64 system
|
||||||
|
|
||||||
Revision 1.214 2004/02/03 22:32:54 peter
|
Revision 1.214 2004/02/03 22:32:54 peter
|
||||||
|
@ -62,6 +62,7 @@ interface
|
|||||||
procedure unchain_overloads(p : TNamedIndexItem;arg:pointer);
|
procedure unchain_overloads(p : TNamedIndexItem;arg:pointer);
|
||||||
procedure loaddefs(ppufile:tcompilerppufile);
|
procedure loaddefs(ppufile:tcompilerppufile);
|
||||||
procedure loadsyms(ppufile:tcompilerppufile);
|
procedure loadsyms(ppufile:tcompilerppufile);
|
||||||
|
procedure reset_def(def:Tnamedindexitem;arg:pointer);
|
||||||
procedure writedefs(ppufile:tcompilerppufile);
|
procedure writedefs(ppufile:tcompilerppufile);
|
||||||
procedure writesyms(ppufile:tcompilerppufile);
|
procedure writesyms(ppufile:tcompilerppufile);
|
||||||
public
|
public
|
||||||
@ -75,6 +76,7 @@ interface
|
|||||||
procedure deref;virtual;
|
procedure deref;virtual;
|
||||||
procedure derefimpl;virtual;
|
procedure derefimpl;virtual;
|
||||||
procedure insert(sym : tsymentry);override;
|
procedure insert(sym : tsymentry);override;
|
||||||
|
procedure reset_all_defs;virtual;
|
||||||
function speedsearch(const s : stringid;speedvalue : cardinal) : tsymentry;override;
|
function speedsearch(const s : stringid;speedvalue : cardinal) : tsymentry;override;
|
||||||
procedure allsymbolsused;
|
procedure allsymbolsused;
|
||||||
procedure allprivatesused;
|
procedure allprivatesused;
|
||||||
@ -216,6 +218,8 @@ interface
|
|||||||
procedure search_class_overloads(aprocsym : tprocsym);
|
procedure search_class_overloads(aprocsym : tprocsym);
|
||||||
function search_default_property(pd : tobjectdef) : tpropertysym;
|
function search_default_property(pd : tobjectdef) : tpropertysym;
|
||||||
|
|
||||||
|
procedure reset_all_defs;
|
||||||
|
|
||||||
{*** symtable stack ***}
|
{*** symtable stack ***}
|
||||||
{$ifdef DEBUG}
|
{$ifdef DEBUG}
|
||||||
procedure test_symtablestack;
|
procedure test_symtablestack;
|
||||||
@ -840,6 +844,18 @@ implementation
|
|||||||
Tstoredsym(p).isstabwritten:=false;
|
Tstoredsym(p).isstabwritten:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure Tstoredsymtable.reset_def(def:Tnamedindexitem;arg:pointer);
|
||||||
|
|
||||||
|
begin
|
||||||
|
Tstoreddef(def).reset;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Tstoredsymtable.reset_all_defs;
|
||||||
|
|
||||||
|
begin
|
||||||
|
defindex.foreach(@reset_def,nil);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TStoredSymtable.concattypestab(p : TNamedIndexItem;arg:pointer);
|
procedure TStoredSymtable.concattypestab(p : TNamedIndexItem;arg:pointer);
|
||||||
|
|
||||||
var stabstr:Pchar;
|
var stabstr:Pchar;
|
||||||
@ -2142,6 +2158,18 @@ implementation
|
|||||||
search_class_member:=nil;
|
search_class_member:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure reset_all_defs;
|
||||||
|
|
||||||
|
var st:Tsymtable;
|
||||||
|
|
||||||
|
begin
|
||||||
|
st:=symtablestack;
|
||||||
|
while st<>nil do
|
||||||
|
begin
|
||||||
|
Tstoredsymtable(st).reset_all_defs;
|
||||||
|
st:=st.next;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
Definition Helpers
|
Definition Helpers
|
||||||
@ -2350,8 +2378,6 @@ implementation
|
|||||||
symtablestack:=nil;
|
symtablestack:=nil;
|
||||||
systemunit:=nil;
|
systemunit:=nil;
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
firstglobaldef:=nil;
|
|
||||||
lastglobaldef:=nil;
|
|
||||||
globaltypecount:=1;
|
globaltypecount:=1;
|
||||||
pglobaltypecount:=@globaltypecount;
|
pglobaltypecount:=@globaltypecount;
|
||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
@ -2380,7 +2406,11 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.134 2004-02-04 22:15:16 daniel
|
Revision 1.135 2004-02-06 22:37:00 daniel
|
||||||
|
* Removed not very usefull nextglobal & previousglobal fields from
|
||||||
|
Tstoreddef, saving 78 kb of memory
|
||||||
|
|
||||||
|
Revision 1.134 2004/02/04 22:15:16 daniel
|
||||||
* Rtti generation moved to ncgutil
|
* Rtti generation moved to ncgutil
|
||||||
* Assmtai usage of symsym removed
|
* Assmtai usage of symsym removed
|
||||||
* operator overloading cleanup up
|
* operator overloading cleanup up
|
||||||
|
Loading…
Reference in New Issue
Block a user