On 31/03/2010 19:21, Dmitry Bely wrote:
On Thu, Sep 3, 2009 at 1:44 PM, Xavier Leroy<xavier.le...@inria.fr> wrote:
(...)
But, I thought that float ref's were automatically unboxed by the compiler
when they didn't escape the local context.
Yes, if all uses of the float ref are unboxed, which is the case in
your code.
let max_val (a:float array) =
let m = ref min_float in
for i = 0 to (Array.length a) - 1 do
if a.(i)> !m
then m := a.(i)
done;
!m
!m is not unboxed (Ocaml 3.11). Should it?
As far as I can tell, the boxing for the reference cell is removed by
the compiler (that is, the reference is implemented as a mutable local
variable), but not the boxing for the float contained in the reference.
Since a is a float array, it is needed to box the float before putting
it in the reference, hence the allocation.
-- Alain
_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs