Disable GC entirely
Johannes Pfau
nospam at example.com
Tue Apr 9 05:00:18 PDT 2013
Am Tue, 09 Apr 2013 11:29:09 +0100
schrieb "Regan Heath" <regan at netmail.co.nz>:
> > A good & simple start would be a -vgc switch, similar to -vtls which
> > prints out all hidden memory allocations. Custom allocators are
> > still important for the library (toString etc). Apart from that I
> > would just stay away from language features which allocate. For
> > example instead of using the concatenate operators I'd just use
> > something like appender (which should then support custom
> > allocators).
>
> Did you see Manu's problem case? I can't recall the method name but
> it was not one which suggested it would allocate, and it didn't in
> the general case but in a very specific case it did. As it stands,
> it's very hard to tell which language features allocate (without code
> inspection of the compiler and standard library) so it's hard to
> avoid.
>
> R
>
toUpperInPlace IIRC? Yes, -vgc would not directly help here as
toUpperInPlace is a library function. But I think this is a library /
documentation bug:
1: We should explicitly document if a function is not supposed to
allocate
2: If a function is called "inPlace" but can still allocate, it needs a
huge red warning.
Those kind of things can be solved partially with correctly documented
functions. But hidden allocations caused by the language (closures,
array literals) are imho more dangerous and -vgc could help there.
Without -vgc it's very difficult to verify if some code could call into
the gc.
Btw: implementing -vgc shouldn't be too difficult: We have to check all
runtime hooks ( http://wiki.dlang.org/Runtime_Hooks ) for allocations,
then check all places in dmd where calls to those hooks are emitted.
More information about the Digitalmars-d
mailing list