Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-08-21 20:31:41 -0700 (Thu, 21 Aug 2003)
Revision: 4866
Log message:
This is a hacked commit, to temporarily fix the weak memo problem
by using arrays instead of weak arrays. This completely fixes the
problem as far as I can tell, but of course it may greatly increase
the amount of memory used by MetaPRL.
Here is my suspicion. There are two indexes into the weak memo,
a weak_descriptor (and int), and a descriptor (the int and the value).
Assumed invariant: a weak_descriptor is live iff the descriptor is live.
The implementation guarantees that the weak_descriptor is live if the
descriptor is. We get into trouble the other way around. If the
descriptor goes dead, the value referred to by the weak_descriptor
will change without notice.
This seems to match the current problem. I'll do some more investigating.
Changes | Path |
+6 -5 | metaprl/mllib/hash_with_gc.ml |
+24 -5 | metaprl/mllib/weak_memo.ml |
+0 -2 | metaprl/theories/itt/itt_int_base.mli |