Commit [edf8d3] Maximize Restore History

1.0.12.18: faster member-type operations

* XSET is a generic set implementation, that uses lists of small sets,
and switches to hashes for larger ones. Current switchoff point is
12 -- but some operations would benefit from a larger one. TODO:
There are other places in SBCL that will probably want to use XSET
as well.

* Instead of storing members directly in the set object, store them in
an XSET -- except for floating point zeros which go into a list of
their own, simplifying the canonicalization a bit. (By adding
complexity elsewhere, of course. Maybe this is not TRT after all...)

* ...now member type arithmetic is mostly O(1) or O(N), instead of
O(BAD), but some operations cons more then before: old implemenation
manageg eg. union without consing when either set was the subset of
the other one -- not so anymore.

Nikodemus Siivola Nikodemus Siivola 2007-12-09

added src/code/xset.lisp
changed src/code/cross-type.lisp
changed src/code/early-extensions.lisp
changed src/code/early-type.lisp
changed src/code/late-type.lisp
changed src/code/typep.lisp
changed src/compiler/generic/primtype.lisp
changed src/compiler/checkgen.lisp
changed src/compiler/ir1opt.lisp
changed src/compiler/srctran.lisp
changed tests/gray-streams.impure.lisp
changed build-order.lisp-expr
changed package-data-list.lisp-expr
changed version.lisp-expr
src/code/xset.lisp Diff Switch to side-by-side view
Loading...
src/code/cross-type.lisp Diff Switch to side-by-side view
Loading...
src/code/early-extensions.lisp Diff Switch to side-by-side view
Loading...
src/code/early-type.lisp Diff Switch to side-by-side view
Loading...
src/code/late-type.lisp Diff Switch to side-by-side view
Loading...
src/code/typep.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/primtype.lisp Diff Switch to side-by-side view
Loading...
src/compiler/checkgen.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir1opt.lisp Diff Switch to side-by-side view
Loading...
src/compiler/srctran.lisp Diff Switch to side-by-side view
Loading...
tests/gray-streams.impure.lisp Diff Switch to side-by-side view
Loading...
build-order.lisp-expr Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...
version.lisp-expr Diff Switch to side-by-side view
Loading...