From: Gerd Moellmann <gerd.moellmann@t...>  20030826 12:58:36

Christophe Rhodes <csr21@...> writes: > The change is simply to use lists rather than adjustable vectors when > performing type algebra. I haven't built SBCL with the change, but I can tell a story from porting your type system changes to CMUCL: If I remember the circumstances right, I had to rewrite the simplify union/intersection part, because I couldn't bootstrap the structures used in the type system (yeah, yeah, I know :) in exactly the way SBCL has them, but the rewrite used vectors like SBCL. That slowed down CMUCL's build by a noticeable amount. Alas, I don't remember the figures, but I'm quite sure it was >10%. Rewriting the simplification to use lists was a major factor in making the build as fast as it was with the old type implementation. revision 1.55 date: 2003/04/16 13:07:50; author: gerd; state: Exp; lines: +378 460 Further speedup of the type system. Avoid compiler notes. The type system is now as fast as it were before. * src/code/type.lisp: Collect typeclass and structure definitions at the beginning of the file to avoid compiler notes and get slot accessor inlining. (withtypesarray, *ctypearrays*): Removed. (simplifyunions): Rewritten simplifyuniontypes. (simplifyintersections): Rewritten simplifyintersectiontypes. (%typeunion2): Removed, inlined in typeunion2. (%typeintersection2): Removed, inlined in typeintersection2.  revision 1.54 date: 2003/04/15 23:07:10; author: gerd; state: Exp; lines: +33 24 Speed up the type system. * src/code/type.lisp (*ctypearrays*): New variable. (withtypesarray): New macro. (simplifyuniontypes, simplifyintersectiontypes): Use it, return lists. (%typeunion, %typeintersection): Handle lists instead of vectors returned by the simplification functionts. 