diff --git a/components/codetools/codetoolmanager.pas b/components/codetools/codetoolmanager.pas index 2f080ae942..fea3700ad7 100644 --- a/components/codetools/codetoolmanager.pas +++ b/components/codetools/codetoolmanager.pas @@ -5141,6 +5141,7 @@ begin Node:=FPascalTools.FindSuccessor(Node); end; end; + Stats.Add('KeywordFuncLists.Global',KeywordFuncLists.CalcMemSize); Stats.WriteReport; Stats.Free; end; diff --git a/components/codetools/keywordfunclists.pas b/components/codetools/keywordfunclists.pas index aa0ec2d96d..b5f53d8f73 100644 --- a/components/codetools/keywordfunclists.pas +++ b/components/codetools/keywordfunclists.pas @@ -168,11 +168,14 @@ var function UpperCaseStr(const s: string): string; function IsUpperCaseStr(const s: string): boolean; +function CalcMemSize: PtrUInt; + implementation var CharToIHash: array[char] of integer; UpWords: array[word] of word; + KeyWordLists: TFPList; function UpperCaseStr(const s: string): string; var i, l, l2: integer; @@ -200,6 +203,19 @@ begin Result:=i>l; end; +function CalcMemSize: PtrUInt; +var + i: Integer; +begin + Result:=0; + if KeyWordLists<>nil then begin + inc(Result,PtrUInt(KeyWordLists.InstanceSize) + +SizeOf(Pointer)*PtrUInt(KeyWordLists.Capacity)); + for i:=0 to KeyWordLists.Count-1 do + inc(Result,TBaseKeyWordFunctionList(KeyWordLists[i]).CalcMemSize); + end; +end; + { TBaseKeyWordFunctionList } constructor TBaseKeyWordFunctionList.Create; @@ -703,8 +719,6 @@ end; //----------------------------------------------------------------------------- -var KeyWordLists: TFPList; - procedure InternalInit; var c: char;