On Thu, Mar 4, 2021 at 9:52 PM Paul Eggert wrote: > On 3/4/21 6:56 AM, Robert Pluim wrote: > > Pip> - zero vector handling depends on Qnil being all zero in memory > > > > I think Emacs already assumes Qnil == 0, since there are places that > > use ! to check for Qnil rather than using NILP. > > The convention is to put a "verify (NIL_IS_ZERO);" near the rare bits of > code that assume Qnil is all-bits-zero. That would be nice, but I'm quite certain there are places in the code that rely on this identity without doing that... > This is to help out any > hypothetical future developer who wants to change Qnil to be some other > value. Currently there are only two such locations. (There is one other > location that uses NIL_IS_ZERO for an optimization.) When I did the NaN boxing thing, I remember seeing quite a few 0.0s popping up where I was expecting nil :-) Anyway, it's easy enough to remove the assumption. Here's the current patch. Pip