How to weaken the temps in MethodContext?
Ned Konz
ned at bike-nomad.com
Thu Mar 1 18:13:18 UTC 2001
My ConstraintMorphs are parameterized using pluggable blocks. This is causing
problems with dangling pointers:
ConstraintMorph instvar targetBlock points to a BlockContext
BlockContext home points to a MethodContext
indexed fields of MethodContext hang on to their last arguments
That is, I'm doing something like this in
ConstraintMorph>>connectToNearestPoint
constraintMorph _ [ :c :m | m nearestPointTo: c center ].
And as soon as that block is evaluated with m set to another Morph, I can't
get rid of the reference to m.
I'm using a WeakArray in ConstraintMorph, but it's not doing any good, since
the indexed fields in the MethodContext aren't weak.
Is this a case of needing real closures?
Any suggestions? Should I stay away from pluggable blocks and use selectors
instead (which is what seems to be done for the Pluggable*Morph family)?
One idea I had was, since the input to the constraint is typically a Morph, I
could try to determine if the Morph had been deleted by looking at its owner.
Is this likely to be reliable?
--
Ned Konz
currently: Stanwood, WA
email: ned at bike-nomad.com
homepage: http://bike-nomad.com
More information about the Squeak-dev
mailing list
|