From 25e955b6e4d407fbd87c0c743fb6201997643455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Tue, 18 Mar 2025 14:52:59 +0100 Subject: [PATCH] * source linebuf as dyn array --- compiler/assemble.pas | 10 +++++----- compiler/finput.pas | 16 ++++++---------- compiler/jvm/agjasmin.pas | 6 +++--- compiler/wasm32/agbinaryen.pas | 6 +++--- compiler/wasm32/agwasa.pas | 6 +++--- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/compiler/assemble.pas b/compiler/assemble.pas index 618543040c..8543d9fe1d 100644 --- a/compiler/assemble.pas +++ b/compiler/assemble.pas @@ -1039,8 +1039,8 @@ Implementation if not assigned(f) then exit; for i:=0 to f.maxlinebuf-1 do - if f.linebuf^[i]<0 then - f.linebuf^[i]:=-f.linebuf^[i]-1; + if f.linebuf[i]<0 then + f.linebuf[i]:=-f.linebuf[i]-1; end; begin @@ -1094,13 +1094,13 @@ Implementation (hp.fileinfo.line0) and - (infile.linebuf^[hp.fileinfo.line]>=0) then + (infile.linebuf[hp.fileinfo.line]>=0) then writer.AsmWriteLn(asminfo^.comment+'['+tostr(hp.fileinfo.line)+'] '+ fixline(infile.GetLineStr(hp.fileinfo.line))); { set it to a negative value ! to make that is has been read already !! PM } - if (infile.linebuf^[hp.fileinfo.line]>=0) then - infile.linebuf^[hp.fileinfo.line]:=-infile.linebuf^[hp.fileinfo.line]-1; + if (infile.linebuf[hp.fileinfo.line]>=0) then + infile.linebuf[hp.fileinfo.line]:=-infile.linebuf[hp.fileinfo.line]-1; end; end; lastfileinfo:=hp.fileinfo; diff --git a/compiler/finput.pas b/compiler/finput.pas index 351489c81e..03829f3eca 100644 --- a/compiler/finput.pas +++ b/compiler/finput.pas @@ -33,8 +33,7 @@ interface linebufincrease=512; type - tlongintarr = array[0..1000000] of longint; - plongintarr = ^tlongintarr; + tlongintarr = array of longint; tinputfile = class path,name : TPathStr; { path and filename } @@ -50,7 +49,7 @@ interface savelastlinepos, saveline_no : longint; - linebuf : plongintarr; { line buffer to retrieve lines } + linebuf : tlongintarr; { line buffer to retrieve lines } maxlinebuf : longint; ref_index : longint; @@ -248,9 +247,7 @@ uses begin if not closed then close; - { free memory } - if assigned(linebuf) then - freemem(linebuf,maxlinebuf*sizeof(linebuf^[0])); + linebuf:=Nil; end; @@ -387,11 +384,10 @@ uses while (line>=maxlinebuf) do begin { create new linebuf and move old info } - linebuf:=reallocmem(linebuf,(maxlinebuf+linebufincrease)*sizeof(linebuf^[0])); - fillchar(linebuf^[maxlinebuf],linebufincrease*sizeof(linebuf^[0]),0); + SetLength(linebuf,(maxlinebuf+linebufincrease)); inc(maxlinebuf,linebufincrease); end; - linebuf^[line]:=linepos; + linebuf[line]:=linepos; end; @@ -405,7 +401,7 @@ uses getlinestr:=''; if l0)) then begin if (hp1.fileinfo.line<>0) and - ((infile.linebuf^[hp1.fileinfo.line]>=0) or (InlineLevel>0)) then + ((infile.linebuf[hp1.fileinfo.line]>=0) or (InlineLevel>0)) then writer.AsmWriteLn(asminfo^.comment+'['+tostr(hp1.fileinfo.line)+'] '+ fixline(infile.GetLineStr(hp1.fileinfo.line))); { set it to a negative value ! to make that is has been read already !! PM } - if (infile.linebuf^[hp1.fileinfo.line]>=0) then - infile.linebuf^[hp1.fileinfo.line]:=-infile.linebuf^[hp1.fileinfo.line]-1; + if (infile.linebuf[hp1.fileinfo.line]>=0) then + infile.linebuf[hp1.fileinfo.line]:=-infile.linebuf[hp1.fileinfo.line]-1; end; end; lastfileinfo:=hp1.fileinfo; diff --git a/compiler/wasm32/agbinaryen.pas b/compiler/wasm32/agbinaryen.pas index fab0d720b2..656aa749ea 100644 --- a/compiler/wasm32/agbinaryen.pas +++ b/compiler/wasm32/agbinaryen.pas @@ -283,13 +283,13 @@ implementation ((hp1.fileinfo.line0)) then begin if (hp1.fileinfo.line<>0) and - ((infile.linebuf^[hp1.fileinfo.line]>=0) or (InlineLevel>0)) then + ((infile.linebuf[hp1.fileinfo.line]>=0) or (InlineLevel>0)) then writer.AsmWriteLn(asminfo^.comment+'['+tostr(hp1.fileinfo.line)+'] '+ fixline(infile.GetLineStr(hp1.fileinfo.line))); { set it to a negative value ! to make that is has been read already !! PM } - if (infile.linebuf^[hp1.fileinfo.line]>=0) then - infile.linebuf^[hp1.fileinfo.line]:=-infile.linebuf^[hp1.fileinfo.line]-1; + if (infile.linebuf[hp1.fileinfo.line]>=0) then + infile.linebuf[hp1.fileinfo.line]:=-infile.linebuf[hp1.fileinfo.line]-1; end; end; lastfileinfo:=hp1.fileinfo; diff --git a/compiler/wasm32/agwasa.pas b/compiler/wasm32/agwasa.pas index 00d0d2bcb7..8d4e0feeab 100644 --- a/compiler/wasm32/agwasa.pas +++ b/compiler/wasm32/agwasa.pas @@ -455,13 +455,13 @@ implementation ((hp1.fileinfo.line0)) then begin if (hp1.fileinfo.line<>0) and - ((infile.linebuf^[hp1.fileinfo.line]>=0) or (InlineLevel>0)) then + ((infile.linebuf[hp1.fileinfo.line]>=0) or (InlineLevel>0)) then writer.AsmWriteLn(asminfo^.comment+'['+tostr(hp1.fileinfo.line)+'] '+ fixline(infile.GetLineStr(hp1.fileinfo.line))); { set it to a negative value ! to make that is has been read already !! PM } - if (infile.linebuf^[hp1.fileinfo.line]>=0) then - infile.linebuf^[hp1.fileinfo.line]:=-infile.linebuf^[hp1.fileinfo.line]-1; + if (infile.linebuf[hp1.fileinfo.line]>=0) then + infile.linebuf[hp1.fileinfo.line]:=-infile.linebuf[hp1.fileinfo.line]-1; end; end; lastfileinfo:=hp1.fileinfo;