prototype multiple dispatch creates uncollectable garbage?

James McCartney asynth at
Fri Sep 3 19:02:15 UTC 2004

On Sep 3, 2004, at 11:34 AM, Brian T. Rice wrote:

> Probably the solution will have to involve a type of system-update 
> notification system, kind of a feature which could be applied to have 
> the effect of finalizers, as an example. Basically we'd need to 
> trigger events when an object's map's roles are removed or otherwise 
> invalidated. The problem is then that the system has to correctly 
> identify which signature applies to the method. In general, method 
> removal is tricky because there may be derived maps and so forth which 
> also have the same signature. So there is a deficiency or gap in the 
> things that the naive PMD configuration, but we're working on it. One 
> factor that allows us not to address it is that our images can be 
> built up rather easily, so we haven't been too concerned with removal 
> yet.

The solution that came to my mind was storing the methods and their 
roles only in the first argument. This seems assymmetrical from a 
storage point of view, but it is still equivalent from the point of 
view of dispatch. Once you know the set of methods applicable to the 
first argument, the methods applicable to all arguments can only be a 
subset of this. So you can just search the parents of the other 
arguments to see if they occur in the method roles. In other words, the 
roles point to the objects instead of the objects pointing to the 
roles. This means that if the first argument becomes collectable, all 
of its methods become collectable, even those that specialize on 
permanent objects. The other benefit of this is that objects like true, 
false don't get junked up with lots of methods that they play lesser 
roles in.

--- james mccartney

More information about the Self-interest mailing list