[D-runtime] druntime commit, revision 459
Sean Kelly
sean at invisibleduck.org
Sat Jan 8 08:15:54 PST 2011
That would be great!
Sent from my iPhone
On Jan 7, 2011, at 11:29 PM, Don Clugston <dclugston at googlemail.com> wrote:
> On 29 December 2010 00:08, Sean Kelly <sean at invisibleduck.org> wrote:
>> On Dec 28, 2010, at 12:17 PM, Don Clugston wrote:
>>
>>> On 28 December 2010 19:34, Sean Kelly <sean at invisibleduck.org> wrote:
>>>> This one was discussed a while ago in private email and stalled for lack of an executive decision. I'll paste some pertinent bits of the discussion below (all stuff I said). The rest of this message is pasted from various old emails.
>>>
>>> That's good to know. So the Linux behaviour is also believed to be
>>> incorrect, but in a different way?
>>
>> Yes. Basically, having an exception thrown when another is in flight can't replace the in flight exception or chain with it, or things break in different, subtle ways (old D behavior was replacement, new D behavior was to be chaining).
>
> Now that I've fixed the Windows SEH implementation so that finally
> clauses are always called, the TDPL behaviour can be implemented quite
> easily.
> All that needs to happen is to move the chaining from the catch
> handler, into the collision handler.
> So, chaining occurs only when two uncaught exceptions have reached the
> same finally or catch clause. (It's OK to have two in flight at the
> same time, as long as they don't collide). No changes to the compiler
> are required, and there's no need to track where the exception is
> thrown. I'm actually quite impressed with SEH, it's a very clever
> design. I never had any desire to understand Windows SEH, but it's Too
> Late Now.
>
> There are only a couple of problems:
> * _d_setUnhandled() isn't much use, because we need the Windows
> EXCEPTION_RECORD structure for the exception in flight, not the D
> exception.
> The semantics of that function need to change anyway, I think, if it's
> a user-accessable function.
> * I have no idea how exception handling works on Linux/OSX. So I
> don't know how hard the TDPL behaviour will be to implement for them,
> and what it will look like. But having a working Windows
> implementation might help you.
>
> Should I implement the TDPL behaviour for Windows, and check it in?
>
> -Don.
> _______________________________________________
> D-runtime mailing list
> D-runtime at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/d-runtime
More information about the D-runtime
mailing list