List of Phobos functions that allocate memory?

Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com> Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com>
Sun Feb 9 03:26:45 PST 2014


On Sunday, 9 February 2014 at 05:29:25 UTC, Walter Bright wrote:
> Ola, I've done it both ways, I actually do know what I'm 
> talking about.

Please note that "you" and "they" was meant as "one" or "the c++ 
community" not personal. It was not ad hominem. So no reason to 
be defensive about it. I am grateful if you can point out where 
my reasoning fails, then I learn something new.

Maybe you could explain why a single occasional Branch Always 
over the unwind-pointer would be slow. Clearly the offset should 
be empirically based (so that you usually can avoid the goto), 
maybe even set to a separate cache line for some CPUs, and you 
could fill out the gaps with other data you need there. It's not 
like I have run i7 on Vtune, so I could be wrong, but I don't see 
why…

And I also think that if you have a CPU with sufficient number of 
callee save registers you can carry along a pointer to the last 
try-block stack frame with not much penalty. After all you only 
have to restore it if the function ruined it and before calling 
new functions that are not inlined and not nothrow, and you could 
stick it into a thread local global too where it matters. On 32 
bit x86 it probably is quite expensive though.

In code where I write try blocks  they tend to stay in the "main 
logic function", this cosde is so heavy that adding the stack 
frame to a linked list (of stack frames) is a neglectible cost

One really need to be careful when doing performance tests of 
exception handling, because it is easy to construct "theoretical" 
code. Programmers should write exception handlers with the 
implementation in mind, so using existing programs as a base line 
is not a good solution either.

> I've sometimes been proven wrong here, so you're welcome to do 
> a pull request proving so.

You know very well that I am not going to rewrite codegen for 
DMD. Adding this feature will complicate codegen and you need to 
understand the code generator well to do the modification.

Besides, I am not sure if a system level language should have 
exceptions at all or that I would use them when doing the kind of 
stuff I like to use D for. :-P ;-) I like to use exception 
handling in application-level code, but not in code for 
audio/simulations/buffer-streaming/low-level-stuff.


More information about the Digitalmars-d mailing list