Integrated code formatter
H. S. Teoh
hsteoh at quickfur.ath.cx
Wed Jan 19 19:42:23 UTC 2022
On Tuesday, 18 January 2022 at 17:12:35 UTC, H. S. Teoh wrote:
> On Tue, Jan 18, 2022 at 07:37:42AM -0800, H. S. Teoh via
> Digitalmars-d wrote: [...]
>> Outlined a few possible approaches to fix this here:
>>
>> https://issues.dlang.org/show_bug.cgi?id=14892#c1
>>
>> I'm not sure I have the compiler chops to actually fix this
>> myself, though. This is a little beyond my level of
>> familiarity with dmd code. Would be nice if somebody picked
>> this up.
> [...]
>
> OK, so to *completely* fix this may be a little beyond me, but
> a partial fix that at least covers std.array.array was within
> reach.
[...]
I surprise myself sometimes. I've managed to ferret out enough
of the -profile=gc implementation that I now have a fix that
covers allocations via core.memory.GC.* as well:
https://github.com/dlang/druntime/pull/3691
So essentially, this fixes the entire bug. Well, almost:
1) It still doesn't cover direct calls to the C API `gc_malloc`,
but I'm just gonna pretend for now that that doesn't exist,
because normal D code is supposed to call the GC via
core.memory.GC instead of invoking the C API directly. (I
suppose this could be documented, though. Maybe I'll post a doc
PR for that.)
2) GC API allocations inside Phobos will show up as some obscure
internal private Phobos function, which is probably unhelpful in
determining where in the user's code the allocation happened.
This part is tricky to fix without adding runtime penalties when
not compiling with -profile=gc, so I'm reluctant to touch this at
the moment. But anyway, I see that as a further enhancement
request; the core issue in 14892 is essentially fixed by the
above PR and my previous PRs which have already been merged.
--T
More information about the Digitalmars-d
mailing list