[fpc-devel] Exceptions on wiki

Sergei Gorelkin sergei_gorelkin at mail.ru
Thu Aug 2 21:00:28 CEST 2018


02.08.2018 20:13, J. Gareth Moreton wrote:

> The information in the Wiki about how exception frames are set up is pretty nice. I didn't know that 
> 'raise' creates an exception frame for the procedure it appears in, but explains why it's often 
> shipped off to another local procedure. Very useful information!
> 
Implicit exception frames in procedures with 'raise' clause come from string manipulations that are 
used to compose non-trivial exception messages, not from the 'raise' itself.

Regards,
Sergei


> True though, it's hard to generalise the performance impact of exception handlers and try...finally 
> blocks, although I think the simple rule of thumb is that there is a performance hit no matter what 
> you try.
> 
> Gareth aka. Kit
> 
> 
> On Thu 02/08/18 06:54 , Sven Barth via fpc-devel fpc-devel at lists.freepascal.org sent:
> 
>     Kirinn <kirinn at mooncore.eu <mailto:kirinn at mooncore.eu>> schrieb am Mi., 1. Aug. 2018, 23:30:
> 
>         Hi all,
> 
>         Inspired by Gareth aka. Kit's infectious enthusiasm, and the recent long
>         discussion on exceptions on this list, I wrote up an article on
>         Exceptions on the FPC wiki. (Strangely enough we didn't have one before.)
> 
>         http://wiki.freepascal.org/Exceptions
> 
>         I hope it'll be useful, and not entirely inaccurate! Particularly the
>         part about performance. If a programmer knows exactly what each
>         exception statement inserts in the code, that should help in deciding
>         when to worry about the performance, and when to embrace the convenience.
> 
> 
>     Please note that you can't generalize the performance impact as it depends on the used exception
>     handling mechanism. By default FPC uses setjmp/longjmp which exhibit the behavior you described.
>     On Win64 however SEH is used which - in that platform - relies on metadata inside the binary to
>     mark the areas for a protected block (no matter whether it's for "except" or "finally"). On
>     Win32 with SEH enabled (which isn't the default currently) it is again different. And should we
>     decide to support DWARF exception frames that would again be different.
> 
>     Regards,
>     Sven
> 
>     _______________________________________________
>     fpc-devel maillist - fpc-devel at lists.freepascal.org <mailto:fpc-devel at lists.freepascal.org>
>     http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel <<a
>     href=>">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
> 
> 
> 
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
> 



More information about the fpc-devel mailing list