handle non-standard slot allocations when updating classes
authorNikodemus Siivola <nikodemus@random-state.net>
Tue, 20 Sep 2011 12:39:18 +0000 (15:39 +0300)
committerNikodemus Siivola <nikodemus@random-state.net>
Tue, 20 Sep 2011 17:50:18 +0000 (20:50 +0300)
commit96aa790ea1d70810e862665c3c8be4ce405a964c
tree540fbb0948b7ae8552225148c36ecdf41417694c
parent43a526583b7015e6b9945d16e31da72fda1325f5
handle non-standard slot allocations when updating classes

 * Refactor layout comparison to work on the effective slot definition list(s)
   directly -- easier to understand.

 * When new slots with custom allocation are added, add their names to the
   "added" list for UPDATE-INSTANCE-FOR-REDEFINED-CLASS. This is not specified
   by ANSI, but unless we do this those slots don't get initialized.

   Removing custom slots is hairier, as is changing a custom slot into
   a normal slot. Add some tests that poke in this area as well...

 * Replace wrapper-instance-slot-layout and wrapper-class-slots with the
   CLASS-SLOTS lists -- saves space and makes things easier to understand.

   Has a small performance cost for updating instances and SLOT-MISSING. Will
   refactor again if this is critical in the real world.
NEWS
src/pcl/braid.lisp
src/pcl/low.lisp
src/pcl/slots.lisp
src/pcl/std-class.lisp
tests/mop-2.impure-cload.lisp