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@lists.freepascal.org
sent:
Kirinn <kir...@mooncore.eu <mailto:kir...@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@lists.freepascal.org
<mailto:fpc-devel@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@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel