Buddha Buck wrote: > At 01:45 PM 02-12-2001 -0300, Branden wrote: > >Am I too wrong here? > > It's... complicated... > Agreed. > Here's an example of where things could go wrong: > > sub foo { > my $destroyme1 = new SomeClass; > my $destroyme2 = new SomeClass; > my @processme1; > my @processme2; > ... > push @processme1, $destroyme1; > push @processme2; $destroyme2; > ... > return \@processme2; > } > > If $destroyme1 and $destroyme2 are ref-counted, but @processme1 and > @processme2 are not, ... > Hey, there's no way for this to work! Anything that can be stored in $ can also be stored in @ or %, so having them with different GC's wouldn't probably work. Actually I was thinking something like PMCs ($@%) being copy-GCed and referred objects (new SomeClass) being refcounted. In this case above, every operation would use refcount's, since they're storing objects in PMCs. What wouldn't use refcount is foreach $i (@a) { $i++; } Normally $i would be an alias to an element of @a, that means it would reference the same PMC that one element of @a is referring to. If in this case copy-GC is used, probably the GC wouldn't even be called inside of the loop, and the whole operation would be done without overhead, even of refcounting, even of copy-GC. I really don't know if this would be a win over full refcounting, since the most things (objects) would continue to use refcounting, and less used things (aliases) would not. I think we can only see if it works with some tests & benchmarks. - BrandenThread Previous | Thread Next