You could change the GC scheme (*cough*) to use one similar to
Python's (ref-counting + additional GC for cyclic references
*double-cough*).

Out-of-this-world-ly yours,
Michael


On Fri, 14 Jan 2005 14:40:43 -0700, Luke Palmer <[EMAIL PROTECTED]> wrote:
> Hildo Biersma writes:
> > If the number of objects that needs this is relatively small, we could
> > play a trick somewhat like the following (with small changes to the perl
> > compiler):
> >
> > 1. Break the filehandle object into two: a generic wrapper that uses
> > refcounting and forwards all calls, plus the actual filehandle object.
> 
> There seems to be a misconception about refcounting, and it's showing up
> here.  People seem to think that you can do it to certain objects and
> not others.  The fact is, right now when we're wiggling around PMCs
> we're just changing some pointers.  But if there is one object that
> likes to be refcounted, then *every* pointer change needs to do the
> refcount dance.  It's a big, potentially cache-blowing speed hit for the
> whole virtual machine.
> 
> You can't do refcounting selectively.  It's all or none.
> 
> Of course, in C++, you can, because you tell C++ which pointers are
> refcountable pointers at compile time.  If, by static analysis, we could
> tell Parrot when PMCs need refcounting before it assembled the bytecode,
> and also in some other places, we might be able to pull it off.  But
> that's a halting problem problem if the language from which we're
> compiling is untyped.
> 
> What I'd most like is to convince Larry to waive the timely destruction
> requirement.  However, that doesn't really solve the problem for other
> languages that need timely destruction.  Are there any?
> 
> Luke
>

Reply via email to