http://www.freepascal.org/wiki/index.php/Avoiding_implicit_try_finally_section
There's an URL to mail archives of this discussion, and a small demo program that shows trick proposed by Mattias how to avoid this implicit try...finally block.
(I also created Writing_efficient_code page, that links between FPC page and Avoiding_implicit_try_finally_section page).
Michalis.
Michael Van Canneyt wrote:
On Fri, 24 Dec 2004, Mattias Gaertner wrote:
On Fri, 24 Dec 2004 11:49:10 +0100 (W. Europe Standard Time) Michael Van Canneyt <[EMAIL PROTECTED]> wrote:
On Fri, 24 Dec 2004, Mattias Gaertner wrote:
On Fri, 24 Dec 2004 10:56:24 +0100 (W. Europe Standard Time) Michael Van Canneyt <[EMAIL PROTECTED]> wrote:
If the answer is yes, then maybe it's safe to compile parts of FPC sources in lists.inc (like TList.Get) inside {$IMPLICITEXCEPTIONS OFF} ?
Why not put it into a sub proc:
function TList.Get(Index: Integer): Pointer;
procedure RaiseIndexError; begin Error(SListIndexError,Index); end;
begin If (Index<0) or (Index>=FCount) then RaiseIndexError; Result:=FList^[Index]; end;
The compiler detects that the sub can raise an exception.
And creates the implicit exception frame only in RaiseIndexError.
I have changed the procedure.
Michael.
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel