Re: Patches that will come...

[email protected] (Arthur Bergman) Thu, 2 Sep 2004 14:03:30 +0100
Newsgroups perl.ponie.dev
Message-ID <[email protected]>
On 2 Sep 2004, at 10:54, Leopold Toetsch wrote:

>
> Ooch. Ok, here is the story: Parrot's current mark and sweep
> stop-the-world garbage collection isn't influenced by such code. *But*
> the "stop-the-world" can take arbitrary long and is rather slow with 
> the
> presence of huge amounts of objects.
>
> To get around the former an incremental mark & sweep collector is
> already working. The second problem can best be addressed by using
> a generational GC scheme.
>
> Both schemes have in common that they need a write barrier: this is a
> notification from the mutatur (the executing user code) that a pointer
> in an aggregate will be overwritten by a new one.
>
> This would look like this:
>
>    DOD_WRITE_BARRIER(interpreter, av, AvARRAY(av)[i], some_sv);
>    AvARRAY(av)[i] = some_sv;
>

Couldn't we just do a DOD_WRITE_BARRIER on the Array PMC and that 
should stop it from going into anything inside that aggregate storage.?

> Or as of Dan's proposal just all in one:
>
>    POINTER_STORE(interpreter, av, AvARRAY(av)[i], some_sv);
>
> The xvs are of course assumed to be PMCs already. The DOD_WRITE_BARRIER
> or the POINTER_STORE are macros that might be empty or do something
> depending on the objects states and on the implemented GC scheme.
>
> BTW: does Ponie have the Parrot interpreter structure available in the
> Perl context?
>


-----
Infrastructure Manager @ Fotango Ltd
+447834716919
http://www.fotango.com/