On Tuesday, 13 January 2015 at 23:47:58 UTC, Ola Fosheim Grøstad wrote:
On Tuesday, 13 January 2015 at 23:40:41 UTC, deadalnix wrote:
1. Restricting the exception object to 512 bytes, preallocated in TLS.


Exception can bubble from one thread to another.

How? If you are thinking coroutines, then the exception can be moved with it.


http://dlang.org/phobos/core_thread.html#.Thread.join

2. Only have one exception in flight per thread


I don't see how you could have more.

In a catch you can throw a new one and initialize with the old, but if they are both in the same memory space it will go wrong.


When you are in the catch, you are not unwinding anymore. You could indeed loose chaining to be able to reuse the memory, that is not what is slow when it come to exception, so it won't make it fast.

3. Require that the first 8 bytes of the exception buffer are 0 when no exception is in flight, and use them for encoding exception type when one is in flight.


The first 8 bytes are already what is used to do matching. But, because of inheritance, it is not as simple as you think it is. Also, who the fuck care what is in the buffer when no exception are in flight ?

1. So that you can mark a non-D function with @checkexception and allow it to both cast D-exceptions and propagate D-exceptions.


Empty hand waving, not not addressing the point.

Skipping 4 and 5, you obviously didn't though that through.

?

What you propose in point 1 - 3 is weak at best. You haven't put serious effort thinking about what you are proposing, so there is no reason anyone should spend any serious effort criticizing it.

Reply via email to