* fixed some issues to get correct values of section_count, works better than before but it is still not perfect for unknown reasons

git-svn-id: trunk@39750 -
This commit is contained in:
florian 2018-09-12 20:33:18 +00:00
parent 15476898ca
commit 800ce23499
5 changed files with 79 additions and 14 deletions

View File

@ -135,6 +135,22 @@ interface
section_count : longint;
constructor create;
function getlasttaifilepos : pfileposinfo;
{ inserts another List at the begin and make this List empty }
procedure insertList(p : TLinkedList); override;
{ inserts another List before the provided item and make this List empty }
procedure insertListBefore(Item:TLinkedListItem;p : TLinkedList); override;
{ inserts another List after the provided item and make this List empty }
procedure insertListAfter(Item:TLinkedListItem;p : TLinkedList); override;
{ concats another List at the end and make this List empty }
procedure concatList(p : TLinkedList); override;
{ concats another List at the start and makes a copy
the list is ordered in reverse.
}
procedure insertListcopy(p : TLinkedList); override;
{ concats another List at the end and makes a copy }
procedure concatListcopy(p : TLinkedList); override;
{ removes all items from the list, the items are not freed }
procedure RemoveAll; override;
end;
TAsmCFI=class
@ -338,6 +354,59 @@ implementation
end;
procedure TAsmList.insertList(p : TLinkedList);
begin
inherited insertList(p);
inc(section_count,TAsmList(p).section_count);
TAsmList(p).section_count:=0;
end;
procedure TAsmList.insertListBefore(Item : TLinkedListItem; p : TLinkedList);
begin
inherited insertListBefore(Item,p);
inc(section_count,TAsmList(p).section_count);
TAsmList(p).section_count:=0;
end;
procedure TAsmList.insertListAfter(Item : TLinkedListItem; p : TLinkedList);
begin
inherited insertListAfter(Item,p);
inc(section_count,TAsmList(p).section_count);
TAsmList(p).section_count:=0;
end;
procedure TAsmList.concatList(p : TLinkedList);
begin
inherited concatList(p);
inc(section_count,TAsmList(p).section_count);
TAsmList(p).section_count:=0;
end;
procedure TAsmList.insertListcopy(p : TLinkedList);
begin
inherited insertListcopy(p);
inc(section_count,TAsmList(p).section_count);
end;
procedure TAsmList.concatListcopy(p : TLinkedList);
begin
inherited concatListcopy(p);
inc(section_count,TAsmList(p).section_count);
end;
procedure TAsmList.RemoveAll;
begin
inherited RemoveAll;
section_count:=0;
end;
{****************************************************************************
TAsmData
****************************************************************************}
@ -424,8 +493,8 @@ implementation
CurrAsmList:=TAsmList.create;
for hal:=low(TAsmListType) to high(TAsmListType) do
AsmLists[hal]:=TAsmList.create;
WideInits :=TLinkedList.create;
ResStrInits:=TLinkedList.create;
WideInits :=TAsmList.create;
ResStrInits:=TAsmList.create;
{ CFI }
FAsmCFI:=CAsmCFI.Create;
end;

View File

@ -365,21 +365,21 @@ type
{ Gets last Item }
function GetLast:TLinkedListItem;
{ inserts another List at the begin and make this List empty }
procedure insertList(p : TLinkedList);
procedure insertList(p : TLinkedList); virtual;
{ inserts another List before the provided item and make this List empty }
procedure insertListBefore(Item:TLinkedListItem;p : TLinkedList);
procedure insertListBefore(Item:TLinkedListItem;p : TLinkedList); virtual;
{ inserts another List after the provided item and make this List empty }
procedure insertListAfter(Item:TLinkedListItem;p : TLinkedList);
procedure insertListAfter(Item:TLinkedListItem;p : TLinkedList); virtual;
{ concats another List at the end and make this List empty }
procedure concatList(p : TLinkedList);
procedure concatList(p : TLinkedList); virtual;
{ concats another List at the start and makes a copy
the list is ordered in reverse.
}
procedure insertListcopy(p : TLinkedList);
procedure insertListcopy(p : TLinkedList); virtual;
{ concats another List at the end and makes a copy }
procedure concatListcopy(p : TLinkedList);
procedure concatListcopy(p : TLinkedList); virtual;
{ removes all items from the list, the items are not freed }
procedure RemoveAll;
procedure RemoveAll; virtual;
property First:TLinkedListItem read FFirst;
property Last:TLinkedListItem read FLast;
property Count:Integer read FCount;

View File

@ -119,7 +119,7 @@ uses
Constructor Tresourcestrings.Create;
begin
List:=TLinkedList.Create;
List:=TAsmList.Create;
end;

View File

@ -816,7 +816,6 @@ implementation
begin
n.p_asm:=TAsmList.create;
n.p_asm.concatlistcopy(p_asm);
n.p_asm.section_count:=p_asm.section_count;
end
else n.p_asm := nil;
n.currenttai:=currenttai;

View File

@ -394,9 +394,6 @@ interface
current_asmdata.CurrAsmList.concatlist(p_asm);
end;
{ Update section count }
current_asmdata.currasmlist.section_count:=current_asmdata.currasmlist.section_count+p_asm.section_count;
{ Release register used in the assembler block }
if (not has_registerlist) then
cg.deallocallcpuregisters(current_asmdata.CurrAsmList);