0.9.18.38:
Typechecking for CLOS instance slots, based on the earlier
clos-typechecking branch by Christophe Rhodes.
To get the typechecking right, especially when considering
inheritance where the slots in subclasses can have tighter
:TYPEs than in the superclass, some major PCL optimizations
need to be disabled. This slows down slot writes significantly.
Typechecking is thus only enabled for safe code.
* Store a function in each slot-definition with a non-T :TYPE, which
checks whether its parameter is of the proper type for the slot.
* Store in each class knowledge about whether the class was defined
in an environment with (SAFETY 3) policy.
* Don't do PV optimization for SETF of SLOT-VALUE in safe code.
* When generating writer methods for classes defined in safe code,
fetch the appropriate slotd for the instance and call its
type-checking-function (if one exists) before doing the slot write.
* Do the same in the slow path of SET-SLOT-VALUE
* When generating a ctor for a MAKE-INSTANCE call in safe code,
check the types of the supplied initargs.
* Fix declaration handling for some binding forms in SB-WALK
* Remove dead accessor-call optimization code
* Tests
17 files changed: