Plan for Exceptions and @nogc?

Chris Williams via Digitalmars-d digitalmars-d at puremagic.com
Tue Feb 17 11:03:48 PST 2015


On Tuesday, 17 February 2015 at 18:50:46 UTC, Tobias Pankrath 
wrote:
>> Could someone give a description of the minutiae of why 
>> Exception throwing uses memory allocation as it is and why 
>> (for example) passing it back on the stack isn't an option?
>
> The stack frame of the thrower is the first one to be rolled 
> back. So you cannot allocate in the stack frame of the thrower, 
> but a function cannot now, who (if anyone) is catching the 
> exceptions it might throw. So I fear the stack is out.

Every throwable function call could be assumed to have a typed 
result (even void functions) and if, after the return, the caller 
checks the type and detects that it was an error, bubbles that 
up, then eventually you get to wherever the catcher is.

But so basically, the current ABI doesn't support it and there's 
no desire to change it? How do exceptions currently happen, if 
not via some official ABI declaration of how throwable methods 
interact with one another? The compiler/linker determines where 
the catcher is and inserts code to cut down the stack and perform 
a long jump all the way back? If so, how do scope statements work?


More information about the Digitalmars-d mailing list