1.0.13.21: MAP-ALLOCATED-OBJECTS robustification
commitede711efb19b4a79e50cd577653d69bbdea84646
authorNikodemus Siivola <nikodemus@random-state.net>
Thu, 10 Jan 2008 14:41:27 +0000 (10 14:41 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Thu, 10 Jan 2008 14:41:27 +0000 (10 14:41 +0000)
tree75774f3b84d86171ebcd67f68ee834be71761323
parenta01e7ac2e8a9f3afae8f759381a0829fceb5bfde
1.0.13.21: MAP-ALLOCATED-OBJECTS robustification

 * There are two cases where we used to fail our AVER (SAP= CURRENT
   END) in MAP-ALLOCATED-OBJECTS:

   -- If we had constructed an unlucky bogus object or few during our
      heap traversal, we might be just sufficiently out of synch to
      overstep it.

   -- If we allocated new objects past the original END during heap
      traversal and, and the mapped over them.

 * Fix the last case always: before calling the provided function,
   check that the object ends before END.

 * Fix the second case for fastidious callers (and add an optional
   argument so callers can inform us about their fastidiousness) by
   using MAKE-LISP-OBJ instead of %MAKE-LISP-OBJ. ROOM still uses the
   old version, since the careful approach is too slow, and even
   the slow path uses %MAKE-LISP-OBJ in the less-error-prone cases.

   ...so not quite perfect yet.
NEWS
contrib/sb-introspect/sb-introspect.lisp
src/code/room.lisp
version.lisp-expr