codetools: removed TCodeTreeNodeExtMemManager, not needed anymore

git-svn-id: trunk@29334 -
This commit is contained in:
mattias 2011-02-02 18:56:59 +00:00
parent e60e0f810e
commit 92a693d145
7 changed files with 62 additions and 197 deletions

View File

@ -518,7 +518,7 @@ begin
raise Exception.Create('TCodeCompletionCodeTool.AddClassInsertion can not add variables to a class interface');
end;
NewInsert:=NodeExtMemManager.NewNode;
NewInsert:=TCodeTreeNodeExtension.Create;
with NewInsert do begin
Node:=PosNode;
Txt:=CleanDef;
@ -575,7 +575,7 @@ begin
while FirstInsert<>nil do begin
ANodeExt:=FirstInsert;
FirstInsert:=FirstInsert.Next;
NodeExtMemManager.DisposeNode(ANodeExt);
ANodeExt.Free;
end;
if fNewMainUsesSectionUnits<>nil then begin
AVLNode:=fNewMainUsesSectionUnits.FindLowest;
@ -633,7 +633,7 @@ procedure TCodeCompletionCodeTool.FindInsertPositionForForwardProc(
var
NearestProcNode, StartSearchProc: TCodeTreeNode;
IsInInterface: boolean;
ProcBodyNodes, ForwardProcNodes: TAVLTree;
ProcBodyNodes, ForwardProcNodes: TAVLTree; // tree of TCodeTreeNodeExtension
ProcAVLNode, NearestAVLNode: TAVLTreeNode;
ProcNodeExt, NearestNodeExt: TCodeTreeNodeExtension;
InsertBehind: boolean;
@ -764,14 +764,8 @@ begin
finally
// clean up
ProcNodeExt.Free;
if ProcBodyNodes<>nil then begin
ProcBodyNodes.FreeAndClear;
ProcBodyNodes.Free;
end;
if ForwardProcNodes<>nil then begin
ForwardProcNodes.FreeAndClear;
ForwardProcNodes.Free;
end;
DisposeAVLTree(ProcBodyNodes);
DisposeAVLTree(ForwardProcNodes);
end;
end;
@ -1315,10 +1309,7 @@ begin
// reparse code and find jump point into new proc
Result:=FindJumpPoint(CursorPos,NewPos,NewTopLine,RevertableJump);
finally
if ProcBodyNodes<>nil then begin
ProcBodyNodes.FreeAndClear;
ProcBodyNodes.Free;
end;
DisposeAVLTree(ProcBodyNodes);
end;
end;
@ -2414,7 +2405,7 @@ var
begin
DebugLn(['AddRedefinition ',NodeText,' Redefined=',CleanPosToStr(Redefinition.StartPos),' Definition=',CleanPosToStr(Definition.StartPos)]);
//DebugLn(['AddRedefinition as source: Definition="',ExtractNode(Definition,[]),'" Redefinition="',ExtractNode(Redefinition,[]),'"']);
NodeExt:=NodeExtMemManager.NewNode;
NodeExt:=TCodeTreeNodeExtension.Create;
NodeExt.Node:=Redefinition;
NodeExt.Data:=Definition;
NodeExt.Txt:=NodeText;
@ -2427,7 +2418,7 @@ var
var
NodeExt: TCodeTreeNodeExtension;
begin
NodeExt:=NodeExtMemManager.NewNode;
NodeExt:=TCodeTreeNodeExtension.Create;
NodeExt.Node:=Node;
NodeExt.Txt:=NodeText;
AllNodes.Add(NodeExt);
@ -2474,7 +2465,7 @@ begin
end;
end;
finally
NodeExtMemManager.DisposeAVLTree(AllNodes);
DisposeAVLTree(AllNodes);
end;
Result:=true;
end;
@ -2677,7 +2668,7 @@ var
end;
if TreeOfCodeTreeNodeExt=nil then
TreeOfCodeTreeNodeExt:=TAVLTree.Create(@CompareCodeTreeNodeExt);
NodeExt:=NodeExtMemManager.NewNode;
NodeExt:=TCodeTreeNodeExtension.Create;
NodeExt.Node:=Node;
NodeExt.Txt:=GetRedefinitionNodeText(Node);
NodeExt.Data:=ReferingNode;
@ -2693,7 +2684,7 @@ var
AVLNode:=FindCodeTreeNodeExtAVLNode(AllNodes,NodeText);
if AVLNode=nil then begin
// add new node
NodeExt:=NodeExtMemManager.NewNode;
NodeExt:=TCodeTreeNodeExtension.Create;
NodeExt.Node:=Node;
NodeExt.Txt:=NodeText;
AllNodes.Add(NodeExt);
@ -2832,8 +2823,7 @@ var
NodeExt:=TCodeTreeNodeExtension(AVLNode.Data);
NeededType:=TCodeTreeNodeDesc(NodeExt.Flags);
if NodeExt.Node.Desc=NeededType then begin
TreeOfCodeTreeNodeExt.RemovePointer(NodeExt);
NodeExtMemManager.DisposeNode(NodeExt);
TreeOfCodeTreeNodeExt.FreeAndDelete(AVLNode);
end;
AVLNode:=NextAVLNode;
end;
@ -2854,7 +2844,7 @@ begin
RemoveGoodAliases;
end;
finally
NodeExtMemManager.DisposeAVLTree(AllNodes);
DisposeAVLTree(AllNodes);
end;
Result:=true;
end;
@ -2921,8 +2911,7 @@ begin
end;
if (not (ReferingType in [ctnTypeDefinition,ctnConstDefinition,ctnProcedure]))
or (DefNode.Desc=ReferingType) then begin
TreeOfCodeTreeNodeExt.Delete(AVLNode);
NodeExtMemManager.DisposeNode(NodeExt);
TreeOfCodeTreeNodeExt.FreeAndDelete(AVLNode);
end;
AVLNode:=NextAVLNode;
end;
@ -3179,7 +3168,7 @@ var
//DebugLn(['CheckProcNode FOUND']);
// save values
ResultNodeExt:=NodeExtMemManager.NewNode;
ResultNodeExt:=TCodeTreeNodeExtension.Create;
ResultNodeExt.Txt:=NodeText;
ResultNodeExt.Node:=NodeExt.Node;
ResultNodeExt.Data:=ProcNode;
@ -3220,7 +3209,7 @@ begin
end;
finally
NodeExtMemManager.DisposeAVLTree(Definitions);
DisposeAVLTree(Definitions);
end;
Result:=true;
end;
@ -3430,7 +3419,7 @@ var
//DebugLn(['CheckProcNode FOUND']);
// save values
ResultNodeExt:=NodeExtMemManager.NewNode;
ResultNodeExt:=TCodeTreeNodeExtension.Create;
ResultNodeExt.Txt:=NodeText;
ResultNodeExt.Node:=NodeExt.Node;
ResultNodeExt.Data:=ProcNode;
@ -3469,7 +3458,7 @@ begin
end;
finally
NodeExtMemManager.DisposeAVLTree(Definitions);
DisposeAVLTree(Definitions);
end;
Result:=true;
end;
@ -3775,7 +3764,7 @@ begin
end;
Result:=ApplyNodeMoves(false);
finally
NodeExtMemManager.DisposeAVLTree(Definitions);
DisposeAVLTree(Definitions);
Graph.Free;
ClearNodeMoves;
end;
@ -3788,8 +3777,7 @@ function TCodeCompletionCodeTool.FixForwardDefinitions(
Rebuild: boolean): boolean;
begin
if Definitions<>nil then begin
NodeExtMemManager.DisposeAVLTree(Definitions);
Definitions:=nil;
DisposeAVLTree(Definitions);
end;
if Graph<>nil then begin
Graph.Free;
@ -4429,8 +4417,7 @@ function TCodeCompletionCodeTool.FixForwardDefinitions(
Result:=MoveNodes(NodeMoveEdges);
finally
NodeMoveEdges.FreeAndClear;
NodeMoveEdges.Free;
DisposeAVLTree(NodeMoveEdges);
ListOfGraphNodes.Free;
end;
end;
@ -4505,7 +4492,7 @@ function TCodeCompletionCodeTool.GatherUnitDefinitions(out
if ExceptionOnRedefinition then
RaiseRedefinition(NodeExt.Node,Node);
end;
NodeExt:=NodeExtMemManager.NewNode;
NodeExt:=TCodeTreeNodeExtension.Create;
NodeExt.Txt:=NodeText;
TreeOfCodeTreeNodeExt.Add(NodeExt);
NodeExt.Node:=Node;
@ -4769,8 +4756,7 @@ begin
end;
end;
finally
ProcBodyNodes.FreeAndClear;
ProcBodyNodes.Free;
DisposeAVLTree(ProcBodyNodes);
end;
end;
@ -4873,14 +4859,8 @@ begin
AllEmpty:=ProcBodyNodes.Count=0;
Result:=true;
finally
if ClassProcs<>nil then begin
ClassProcs.FreeAndClear;
ClassProcs.Free;
end;
if ProcBodyNodes<>nil then begin
ProcBodyNodes.FreeAndClear;
ProcBodyNodes.Free;
end;
DisposeAVLTree(ClassProcs);
DisposeAVLTree(ProcBodyNodes);
end;
end;
@ -4999,14 +4979,8 @@ begin
end;
Result:=SourceChangeCache.Apply;
finally
if ProcBodyNodes<>nil then begin
ProcBodyNodes.FreeAndClear;
ProcBodyNodes.Free;
end;
if ProcDefNodes<>nil then begin
ProcDefNodes.FreeAndClear;
ProcDefNodes.Free;
end;
DisposeAVLTree(ProcBodyNodes);
DisposeAVLTree(ProcDefNodes);
end;
end;
@ -6927,12 +6901,8 @@ begin
end;
Result:=true;
finally
if ClassProcs<>nil then begin
ClassProcs.FreeAndClear;
ClassProcs.Free;
end;
ProcBodyNodes.FreeAndClear;
ProcBodyNodes.Free;
DisposeAVLTree(ClassProcs);
DisposeAVLTree(ProcBodyNodes);
end;
end;
@ -7233,7 +7203,7 @@ begin
+'end;';
// add method data
NodeExt:=NodeExtMemManager.NewNode;
NodeExt:=TCodeTreeNodeExtension.Create;
NodeExt.Txt:=CleanProcCode;
NodeExt.ExtTxt1:=FullProcCode;
NodeExt.ExtTxt2:=ProcName;
@ -7307,7 +7277,7 @@ begin
Result:=true;
finally
FreeClassInsertionList;
NodeExtMemManager.DisposeAVLTree(NewMethods);
DisposeAVLTree(NewMethods);
end;
end;

View File

@ -3501,10 +3501,7 @@ begin
on e: Exception do Result:=HandleException(e);
end;
finally
if TreeOfCodeTreeNodeExt<>nil then begin
TreeOfCodeTreeNodeExt.FreeAndClear;
TreeOfCodeTreeNodeExt.Free;
end;
DisposeAVLTree(TreeOfCodeTreeNodeExt);
end;
end;
@ -3562,10 +3559,7 @@ begin
on e: Exception do Result:=HandleException(e);
end;
finally
if TreeOfCodeTreeNodeExt<>nil then begin
TreeOfCodeTreeNodeExt.FreeAndClear;
TreeOfCodeTreeNodeExt.Free;
end;
DisposeAVLTree(TreeOfCodeTreeNodeExt);
end;
end;
@ -3621,10 +3615,7 @@ begin
Result:=FCurCodeTool.ReplaceConstFunctions(TreeOfCodeTreeNodeExt,
SourceChangeCache);
finally
if TreeOfCodeTreeNodeExt<>nil then begin
TreeOfCodeTreeNodeExt.FreeAndClear;
TreeOfCodeTreeNodeExt.Free;
end;
DisposeAVLTree(TreeOfCodeTreeNodeExt);
end;
until not Result;
except
@ -3685,10 +3676,7 @@ begin
Result:=FCurCodeTool.ReplaceTypeCastFunctions(TreeOfCodeTreeNodeExt,
SourceChangeCache);
finally
if TreeOfCodeTreeNodeExt<>nil then begin
TreeOfCodeTreeNodeExt.FreeAndClear;
TreeOfCodeTreeNodeExt.Free;
end;
DisposeAVLTree(TreeOfCodeTreeNodeExt);
end;
until not Result;
except

View File

@ -295,21 +295,6 @@ type
end;
{ TCodeTreeNodeExtMemManager - memory system for TCodeTreeNodeExtension(s) }
TCodeTreeNodeExtMemManager = class(TCodeToolMemManager)
protected
procedure FreeFirstItem; override;
public
procedure DisposeNode(ANode: TCodeTreeNodeExtension);
procedure DisposeAVLTree(TheTree: TAVLTree);
function NewNode: TCodeTreeNodeExtension;
end;
var
NodeExtMemManager: TCodeTreeNodeExtMemManager;
//-----------------------------------------------------------------------------
// useful functions
function NodeDescriptionAsString(Desc: TCodeTreeNodeDesc): string;
@ -322,6 +307,7 @@ function FindCodeTreeNodeExtWithIdentifier(Tree: TAVLTree; Identifier: PChar
): TCodeTreeNodeExtension;
function FindCodeTreeNodeExtAVLNodeWithIdentifier(Tree: TAVLTree;
Identifier: PChar): TAVLTreeNode;
procedure DisposeAVLTree(var Tree: TAVLTree);
function CompareTxtWithCodeTreeNodeExt(p: Pointer;
NodeData: pointer): integer;
function CompareIdentifierWithCodeTreeNodeExt(p: Pointer;
@ -505,6 +491,14 @@ begin
Result:=Tree.FindKey(Identifier,@CompareIdentifierWithCodeTreeNodeExt);
end;
procedure DisposeAVLTree(var Tree: TAVLTree);
begin
if Tree=nil then exit;
Tree.FreeAndClear;
Tree.Free;
Tree:=nil;
end;
function CompareTxtWithCodeTreeNodeExt(p: Pointer; NodeData: pointer
): integer;
var
@ -997,86 +991,5 @@ begin
+MemSizeString(ExtTxt3);
end;
{ TCodeTreeNodeExtMemManager }
function TCodeTreeNodeExtMemManager.NewNode: TCodeTreeNodeExtension;
begin
if FFirstFree<>nil then begin
// take from free list
Result:=TCodeTreeNodeExtension(FFirstFree);
TCodeTreeNodeExtension(FFirstFree):=Result.Next;
Result.Next:=nil;
end else begin
// free list empty -> create new node
Result:=TCodeTreeNodeExtension.Create;
end;
inc(FCount);
end;
procedure TCodeTreeNodeExtMemManager.DisposeNode(ANode: TCodeTreeNodeExtension);
begin
{$IFNDEF DisableCTNodeExtMemManager}
if (FFreeCount<FMinFree) or (FFreeCount<((FCount shr 3)*FMaxFreeRatio)) then
begin
// add ANode to Free list
ANode.Clear;
ANode.Next:=TCodeTreeNodeExtension(FFirstFree);
TCodeTreeNodeExtension(FFirstFree):=ANode;
inc(FFreeCount);
end else begin
{$ENDIF}
// free list full -> free the ANode
ANode.Free;
{$IFNDEF DisableCTNodeExtMemManager}
end;
{$ENDIF}
dec(FCount);
end;
procedure TCodeTreeNodeExtMemManager.DisposeAVLTree(TheTree: TAVLTree);
var ANode: TAVLTreeNode;
begin
if TheTree=nil then exit;
ANode:=TheTree.FindLowest;
while ANode<>nil do begin
DisposeNode(TCodeTreeNodeExtension(ANode.Data));
ANode:=TheTree.FindSuccessor(ANode);
end;
TheTree.Free;
end;
procedure TCodeTreeNodeExtMemManager.FreeFirstItem;
var ANode: TCodeTreeNodeExtension;
begin
ANode:=TCodeTreeNodeExtension(FFirstFree);
TCodeTreeNodeExtension(FFirstFree):=ANode.Next;
ANode.Free;
end;
//-----------------------------------------------------------------------------
procedure InternalInit;
begin
NodeExtMemManager:=TCodeTreeNodeExtMemManager.Create;
end;
procedure InternalFinal;
begin
FreeAndNil(NodeExtMemManager);
end;
initialization
InternalInit;
finalization
{$IFDEF CTDEBUG}
DebugLn('codetree.pp - finalization');
{$ENDIF}
{$IFDEF MEM_CHECK}
CheckHeap(IntToStr(MemCheck_GetMem_Cnt));
{$ENDIF}
InternalFinal;
end.

View File

@ -2728,10 +2728,7 @@ begin
IncreaseTreeChangeStep(true);
// then change
Tree.Clear;
if FNodeParseErrors<>nil then begin
FNodeParseErrors.FreeAndClear;
FreeAndNil(FNodeParseErrors);
end;
DisposeAVLTree(FNodeParseErrors);
end;
end;

View File

@ -1882,8 +1882,7 @@ end;
procedure TIdentCompletionTool.ClearFoundMethods;
begin
if FIDTFoundMethods=nil then exit;
NodeExtMemManager.DisposeAVLTree(FIDTFoundMethods);
FIDTFoundMethods:=nil;
FreeAndNil(FIDTFoundMethods);
end;
function TIdentCompletionTool.CollectMethods(
@ -1911,7 +1910,7 @@ begin
// method is overriden => ignore
end else begin
// new method
NodeExt:=NodeExtMemManager.NewNode;
NodeExt:=TCodeTreeNodeExtension.Create;
NodeExt.Node:=FoundContext.Node;
NodeExt.Data:=FoundContext.Tool;
NodeExt.Txt:=ProcText;

View File

@ -115,13 +115,11 @@ begin
OldAVLNode1:=AVLNode1;
AVLNode1:=Tree1.FindSuccessor(AVLNode1);
if not KeepTree1 then begin
NodeExtMemManager.DisposeNode(TCodeTreeNodeExtension(OldAVLNode1.Data));
Tree1.Delete(OldAVLNode1);
Tree1.FreeAndDelete(OldAVLNode1);
end;
OldAVLNode2:=AVLNode2;
AVLNode2:=Tree2.FindSuccessor(AVLNode2);
NodeExtMemManager.DisposeNode(TCodeTreeNodeExtension(OldAVLNode2.Data));
Tree2.Delete(OldAVLNode2);
Tree2.FreeAndDelete(OldAVLNode2);
end;
end;
end;
@ -428,8 +426,8 @@ begin
Result:=JumpToProc(CursorNode,JumpToProcAttr,
ProcNode,JumpToProcAttr);
finally
NodeExtMemManager.DisposeAVLTree(SearchForNodes);
NodeExtMemManager.DisposeAVLTree(SearchInNodes);
DisposeAVLTree(SearchForNodes);
DisposeAVLTree(SearchInNodes);
end;
end;
exit;
@ -517,8 +515,8 @@ begin
end;
finally
NodeExtMemManager.DisposeAVLTree(SearchForNodes);
NodeExtMemManager.DisposeAVLTree(SearchInNodes);
DisposeAVLTree(SearchForNodes);
DisposeAVLTree(SearchInNodes);
end;
end else begin
// procedure is not forward, search on same proc level
@ -586,8 +584,8 @@ begin
end;
Result:=JumpToProc(CursorNode,JumpToProcAttr,ProcNode,JumpToProcAttr);
finally
NodeExtMemManager.DisposeAVLTree(SearchForNodes);
NodeExtMemManager.DisposeAVLTree(SearchInNodes);
DisposeAVLTree(SearchForNodes);
DisposeAVLTree(SearchInNodes);
end;
exit;
end else begin
@ -664,8 +662,8 @@ begin
end;
finally
NodeExtMemManager.DisposeAVLTree(SearchForNodes);
NodeExtMemManager.DisposeAVLTree(SearchInNodes);
DisposeAVLTree(SearchForNodes);
DisposeAVLTree(SearchInNodes);
end;
end;
end;
@ -807,7 +805,7 @@ begin
CurProcName:=ExtractProcHead(ANode,Attr);
//DebugLn(['[TMethodJumpingCodeTool.GatherProcNodes] D "',CurProcName,'" ',phpInUpperCase in Attr]);
if (CurProcName<>'') then begin
NewNodeExt:=NodeExtMemManager.NewNode;
NewNodeExt:=TCodeTreeNodeExtension.Create;
with NewNodeExt do begin
Node:=ANode;
Txt:=CurProcName;

View File

@ -4557,7 +4557,7 @@ function TStandardCodeTool.GatherPublishedClassElements(
{$IFDEF VerboseDanglingComponentEvents}
debugln('TStandardCodeTool.GatherPublishedClassElements CurProcName="',CurProcName,'"');
{$ENDIF}
NewNodeExt:=NodeExtMemManager.NewNode;
NewNodeExt:=TCodeTreeNodeExtension.Create;
with NewNodeExt do begin
Node:=ANode;
Txt:=CurProcName;
@ -4566,7 +4566,7 @@ function TStandardCodeTool.GatherPublishedClassElements(
end
else if (ANode.Desc=ctnVarDefinition) and WithVariables then begin
CurVarName:=CurTool.ExtractDefinitionName(ANode);
NewNodeExt:=NodeExtMemManager.NewNode;
NewNodeExt:=TCodeTreeNodeExtension.Create;
with NewNodeExt do begin
Node:=ANode;
Txt:=CurVarName;
@ -4575,7 +4575,7 @@ function TStandardCodeTool.GatherPublishedClassElements(
end
else if (ANode.Desc=ctnProperty) and WithProperties then begin
CurPropName:=CurTool.ExtractPropName(ANode,false);
NewNodeExt:=NodeExtMemManager.NewNode;
NewNodeExt:=TCodeTreeNodeExtension.Create;
with NewNodeExt do begin
Node:=ANode;
Txt:=CurPropName;
@ -4819,7 +4819,7 @@ begin
CheckMethodsInPersistent(TComponent(AllComponents[i]));
finally
Collector.Free;
NodeExtMemManager.DisposeAVLTree(PublishedMethods);
PublishedMethods.Free;
end;
end;