On Tue, 24 Aug 2010 23:53:44 +0200, Jonathan M Davis <jmdavisp...@gmail.com> wrote:

On Tuesday, August 24, 2010 14:37:09 bearophile wrote:
Steven Schveighoffer:
> For example, foo(HashSet!int hs) inside the module testme becomes:
> _D6testme3fooFC12dcollections7HashSet14__T7HashSetTiZ7HashSetZv

And I think some more things needs to be added to that string, like a
representation for the pure attribute, etc.

Bye,
bearophile

They probably aren't there because

1. They have nothing to do with overrideability.

2. They have nothing to do with C linking.

Presumably, dmd deals with those attributes at the appropriate time and then doesn't bother putting them in the symbol table because they're not relevant any more (or if they are relevant, it has other ways of getting at them). If they were actually necessary in the symbol name, they'd be there. If they aren't
necessary, why bother putting them in there, making the symbol names even
longer?

Pure might be worth stuffing in the symbol name, as the compiler may
optimize things differently for pure vs. non-pure(dirty?) code.
E.g. the result of a large, pure function that takes a while to compute
might be cached to prevent calling it twice.

--
Simen

Reply via email to