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

Reply via email to