1.0.14.34: slightly less and slightly faster constraint propagation
commit4898febe4d3ab2eaa83c26cd4c1ff113772100c4
authorNikodemus Siivola <nikodemus@random-state.net>
Mon, 18 Feb 2008 10:05:40 +0000 (18 10:05 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Mon, 18 Feb 2008 10:05:40 +0000 (18 10:05 +0000)
treea524782ce0ddeeb1ba2c865e186e853012ed64d0
parent45fb57cdb91d4dd322540d17d404a1918998aea4
1.0.14.34: slightly less and slightly faster constraint propagation

 * For negated EQL constaints, don't cons up multiple MEMBER-TYPE
   instances during a single pass through CONSTRAIN-REF-TYPE:
   accumulate a single XSET, and turn it into a MEMBER-TYPE only at
   the end.

 * Don't construct (NOT (MEMBER ...TON-OF-SYMBOLS...)) types at all,
   unless SPEED > COMPILATION speed. Knowing that a variable is not
   in a set of symbols is seldom useful, and compiling large CASE
   statements with symbols as keys can end up spending huge amounts
   of time just building these sets.

 * Adjust FD-STREAMS to use an ECASE in the single place in SBCL where
   without the aforementioned constraint propagation the compiler is
   not able to determine sufficiently constrain the result type.  (Not
   needed since the build has SPEED > COMPILATION-SPEED, but keeps
   things non-brittle.)
src/code/fd-stream.lisp
src/compiler/constraint.lisp
version.lisp-expr