From: Rob MacLachlan <Rob_MacL<achlan@ra...> - 2002-03-11 14:42:21
In the beginning, under Mach, memory was zero-filled by the kernel when you
allocated it, and it was easy to request demand-zero filling by
deallocating and reallocating oldspace after GC. This also had the effect
of freeing up physical memory backing oldspace. Since newly allocated
memory was initialized a low level to fixnum zero, it seemed silly to
reinitialize it to something else when the user evidently intended to
initialize it once again themselves. Also more subtly, with the demand
zero-fill, the physical memory to back the allocated vector is not even
allocated until you initialize it to a non-zero value.
I have completely lost track of how the low-level VM interface has been
done on the various platforms, and to what degree zero filling makes any
sense anymore. But the other ports also implemented zero filling for
From: Lynn Quam <quam@ai...> - 2002-03-11 14:54:54
Numeric arrays in Allegro v6.0 are still totally uninitialized unless
:INITIAL-ELEMENT or :INITIAL-CONTENTS is specified. In my previous
message I thought this ACL "feature" was fixed, but I had not tested
it in compiled code, which apparently has some optimizations. This is
actually a VERY BAD "feature" of ACL. You are likely to end up with
floating point exceptions, integer overflows, who knows what, and it
will be completely unreproducible.
At least CMUCL initializes arrays in a reproducible fashion.