Quando Delphi honra `inline` e quando nã
Eu estava tentando otimizar um pedaço de código que tem essa construção:
while (i > 0) do begin
Dec(i);
Isso parece ineficiente, então tentei fazer o seguinte:
while (Dec(i) >= 0) do begin
Isso não funciona porque Dec é um procedimento e não uma funçã
Então reescrevi para:
procedure Withloop;
var
....
function Decr(var a: integer): integer; inline;
begin
Dec(a);
Result:= a;
end;
...
while (Decr(i) >= 0) do begin
Mas isso é compilado em:
SDIMAIN.pas.448: while (Decr(i) >= 0) do begin
00468EE5 8BC4 mov eax,esp
00468EE7 E8D0FEFFFF call Decr <<--- A call??
00468EEC 85C0 test eax,eax
00468EEE 0F8D12FFFFFF jnl $00468e06
00468EF4 EB01 jmp $00468ef7
o entanto, em outra parte do programa, ele alinha uma função muito be
Que regra geral (ou regra rígida) posso usar para saber que a Delphi honrará oinline
directiva?