On Tuesday, 13 January 2015 at 23:58:53 UTC, deadalnix wrote:
http://dlang.org/phobos/core_thread.html#.Thread.join
I don't see the problem. I'm suggesting value semantics, it can
be copied.
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.
You can't have chaining with this scheme...? But since you can
only have one instance it has to be initialized with value
semantics. It's a small constraint.
Not using regular Itanium-style unwinding will make it
potentially faster. Using TLS makes it possible to propagate over
non-D code or code where the register pressure is high, it can be
optimized away so you don't need TLS if you don't span over non-D
code.
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.
Who are you waving at?
Non D functions can cast by setting the TLS memory to an
exception value, then do a regular return. The D function that
called the non-D function will check TLS memory to see if there
is an exception in flight.
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.
Then don't bother.
If your point regarding point 4 was that it would limit cross
compiler linking, then yes. And that would be intentional, since
it is far too soon to standardize D at that level. It just
prevents experimentation and performance gains.
If your point regarding point 5 is that it would be too limiting,
well then you would need to differentiate between D and C
entrypoints to D functions to overcome the problem. That's
possible, but IMO not worth it.