[Gc] win32 special treatment in GC_add_roots and GC_remove_roots
codepaths
Lucas Meijer
lucas at lucasmeijer.com
Tue Sep 13 07:26:20 PDT 2011
Hi Ivan, thanks for your reply.
I could take a stab at this, however I don't fully understand the
problem yet:
GC_remove_roots_inner seems not to do the correct thing when the root
has been expanded due to the addition of another rootset.
It looks to me that scenario is "not implemented yet" on any platform.
not just win32.
Is there any special reason why win32 cannot follow the codepath of line
219->225 of mark_rts.c,
and the ifdef of line 299 of mark_rts.c being removed, like all other
platforms do,
so at least win32 would get support for unregistering of roots that have
not been expanded.
(all linenumbers from mark_rts.c from master on github)
Bye, Lucas
On 9/13/11 4:17 PM, Ivan Maidanski wrote:
> Hi Lucas,
>
> In short words: it is possible to implement but no one spent his time on it yet.
> If you feel you could do it - great - send me a patch (against "master" branch).
>
> Regards.
>
> 13 09 2011, 00:20 Lucas Meijer<lucas at lucasmeijer.com>:
>> Hi,
>>
>> in GC_add_roots_inner there are is a win32 codepath and a nonwin32 codepath
>> for detecting if there is an overlap/adjacent rootset already present. if so it
>> extends the existing rootset to fully include the newly added rootset.
>>
>> GC-remove_roots is not implemented on win32.
>>
>> I'm hoping someone can explain why the nonwin32 codepath is required. On a quick
>> experiment, making win32 use the nonwin32 codepath, things "seem" to work fine,
>> and allow me to unregister roots.
>>
>> A message on this mailinglist, Ivan writes:
>>
>> "In theory, it's possible to implement GC_remove_roots() for Win32.
>> But, it is complicated due to overlapping/adjacent regions processing."
>>
>> This statement puzzles me, as the non Win32 codepath also does
>> overlapped-roots-collapsing, so it would seem to be it would suffer from the
>> same problem of unregistering being unsuccessful in the case where the rootset
>> has been expanded.
>>
>> What is so special about win32?
>>
>> Thanks,
>>
>> Lucas
>>
>> _______________________________________________
>> Gc mailing list
>> Gc at linux.hpl.hp.com
>> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
More information about the Gc
mailing list