More precise GC
bearophile
bearophileHUGS at lycos.com
Sun Mar 28 09:50:20 PDT 2010
Robert Jacques:
>What I think you're forgetting is that all compile-time type info is lost at runtime. [... etc]<
Thank you very much for all your explanations, I didn't know that the situation is so terrible. I suddenly like not-GC languages more :-)
I think the compilation of D code must build a data structure that will be used at runtime by the GC to know the type of all variables and pointers, otherwise there's no hope in a GC that works well in long-running programs.
What you have explained me means that my gcfollow is useless (it has another minor problem: sometimes the information regarding the contents of the union is not inside the struct fields, so the gcfollow can have troubles in finding such information far away).
> No, what you can't do is hide flags in high order bits or use tricks like
> XOR to store two pointers in a single field. The 4 low order bits are fair
> game:
This page:
http://www.digitalmars.com/d/2.0/garbage.html
Says:
Do not take advantage of alignment of pointers to store bit flags in the low order bits:
p = cast(void*)(cast(int)p | 1); // error: undefined behavior
Bye,
bearophile
More information about the Digitalmars-d
mailing list