GC refactor ahead
Kevin Tew
tewk at tewk.com
Fri Dec 4 16:00:33 UTC 2009
Pmichaud is hinting at my primary concern.
Intergenerational pointer invariants should not be enforced manually.
Constant PMCS are a headache. We have had lots of "GC bugs" because
developers hung non-constant objects off of a constant pmc.
This is even worse if a specific PMC type is used in both constant and
non-constant settings.
1. You can't separate objects into separate generations unless you can
track intergenerational pointers.
2. Tracking (or eliminating) intergenerational pointers based on
"developer coding policy invariants" (ie Constant PMCs can ONLY contain
or point to constant PMCS) is essentially reverting memory management
responsibilities back to the developer.
Coding policy based intergenerational management will be violated
(creating GC bugs) by adding new features and refactoring old code.
Unless I'm missing something obvious this seems likely to multiply the
types of bugs that constant PMCS introduce.
Kevin
Patrick R. Michaud wrote:
> On Fri, Dec 04, 2009 at 10:52:19AM +0000, Allison Randal wrote:
>
>> [...] We can
>> also use a function pmc_new_methuselah for objects we know are
>> created at interpreter startup that will live until interpreter
>> death (there's no reason to run GC on those during operation at
>> all). Like constants, we require that all children of adonis or
>> methuselah PMCs must be allocated from the same pool(s).
>>
>
> ...when we're allocating a new PMC, how can we know in advance
> that it will end up being a child of a methuselah PMC? Or do we
> not need to know this (if we don't need to know it, how does
> the requirement get met)?
>
> Pm
> _______________________________________________
> http://lists.parrot.org/mailman/listinfo/parrot-dev
>
More information about the parrot-dev
mailing list