English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    
Browse thread
Re: [Caml-list] NULL as a caml value
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Damien Doligez <damien.doligez@i...>
Subject: Re: [Caml-list] NULL as a caml value
>From: Christopher Quinn <cq@htec.demon.co.uk>
>> Does it even need to be word aligned?
>> If Is_long() tests positive the 'pointer' is also ignored.
>> I hope I have not erred!?

There are three cases to consider:

A. word-aligned
B. odd
C. equal to 2 modulo 4

>From: Jacques Garrigue <garrigue@kurims.kyoto-u.ac.jp>
>Otherwise, looking at the runtime's source, I see nothing that would
>prevent from using any (even non-aligned) pointer outside of the caml
>heaps to be cast to a value, but the manual does not allow it
>explicitly, so this may mean that such non-aligned even values could
>be used for something else. (Actually they are already used for
>compaction.)

Yes, compaction is the reason why non-aligned pointers are not allowed
by the documentation.  The compaction code will crash on case C.

So you can have it word-aligned, or odd, but not all arbitrary
pointers are allowed.  Be careful.  And compaction is now activated by
default (not in 3.04, but in the working version).

Don't ask me what happens on 64-bit machines, I'd have to look at the
source :-)

-- 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