caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Re: Constants immediatelly disappear from the Weak array. (PR#1925)
       [not found] <200311120908.KAA10511@pauillac.inria.fr>
@ 2003-11-12 12:49 ` Damien Doligez
  2003-11-12 23:22   ` Aleksey Nogin
  0 siblings, 1 reply; 2+ messages in thread
From: Damien Doligez @ 2003-11-12 12:49 UTC (permalink / raw)
  To: caml-list, caml-bugs

On Wednesday, November 12, 2003, at 10:13 AM, Aleksey Nogin wrote:

> When trying to switch from 3.06 to 3.07+2 I've noticed the following 
> difference in how the Weak module works:

[
   In 3.06, an empty list [] does not disappear from a weak array;
   in 3.07+2 it disappears immediately
]

> Basically, in 3.07+2, the empty list disappears from the weak array as 
> soon as it is added into it. Is this a bug or a feature?

Feature.


> The old behavior is useful because it allows to assume that while a 
> value is referenced somewhere, Weak.get will always return Some. This 
> allowed using Weak.get as an indicator of whether it was OK to discard 
> some "helper" data (which should be only discarded after the primary 
> data is no longer in use).

Yes, but.  In 3.06, [] will never be removed from the weak array, and
you will keep your helper data forever.

The source your the problem is that [] is not allocated in the heap.
It is represented by an integer value.  Hence, there is no sharing
between various occurrences of [] in your data and the notion of a
weak pointer to [] does not make sense.

If you really want to make sure that you are manipulating pointers,
you should use a record or a list ref.

-- Damien

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] Re: Constants immediatelly disappear from the Weak array. (PR#1925)
  2003-11-12 12:49 ` [Caml-list] Re: Constants immediatelly disappear from the Weak array. (PR#1925) Damien Doligez
@ 2003-11-12 23:22   ` Aleksey Nogin
  0 siblings, 0 replies; 2+ messages in thread
From: Aleksey Nogin @ 2003-11-12 23:22 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml-list, caml-bugs

On 12.11.2003 04:49, Damien Doligez wrote:

> Yes, but.  In 3.06, [] will never be removed from the weak array, and
> you will keep your helper data forever.

But that is reasonable semantically - since for all we know some 
reachable memory location can have [] in it, so we need to keep it 
forever. Note that for the same reason the helper data needs to stay 
around forever _anyway_, but now the implementation just got _much_ uglier.

Basically, we used to have a very nice and completely polymorphic 
weak_memo module (that solves the following problem - if you have an 
arbitrary mutually-recursive data type that you are converting into an 
"isomorphic" one, how do you set it up so that equal inputs are mapped 
to the same output, and the whole process takes linear time); and in 
3.07 this module needs to include various calls to Obj to be able to 
figure out whether the output happens to be an unboxed value.

In other words, 3.06 allowed things to stay completely polymorphic, 
while 3.07 requires Obj hacks. Very unfortunate...

-- 
Aleksey Nogin

Home Page: http://nogin.org/
E-Mail: nogin@cs.caltech.edu (office), aleksey@nogin.org (personal)
Office: Jorgensen 70, tel: (626) 395-2907

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-11-12 23:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <200311120908.KAA10511@pauillac.inria.fr>
2003-11-12 12:49 ` [Caml-list] Re: Constants immediatelly disappear from the Weak array. (PR#1925) Damien Doligez
2003-11-12 23:22   ` Aleksey Nogin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).