On Thu, 25 May 2023, Hairy Pixels via fpc-pascal wrote:



On May 24, 2023, at 10:11 PM, Sven Barth via fpc-pascal 
<fpc-pascal@lists.freepascal.org> wrote:

You must have $H+ on and those are AnsiStrings? Why is there exception handling 
involved with AnsiString? I guess it needs this just in case an exception is 
thrown somewhere in the call stack?

Because Ansi- and UnicodeString are managed types. *All* managed types managed 
string types, interfaces, Variants, managed records) must be finalized 
correctly even if an exception occurs.


That's a problem with exceptions then, they are baked into the language
and impose a cost on all managed types now even if we use them or not. Even disabling the implicit stack frames (forgot what it's called) doesn't
get around this right?

Why do you insist it is a problem ?

Simply don't use managed types and don't use exceptions if you don't like the
overhead they cause. It's still perfectly possible: avoid the sysutils unit
and you're all set. The system unit does not use exceptions.

That 99.99% of people does use it, indicates they simply take the overhead 
because
of the advantages that the managed types offer.

Which is not to say that FPC should not strive to minimize the overhead.
Conceivably there is some gain possible on non-windows platforms.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to