Commit [b71b8d] Maximize Restore History

extensible CAS and CAS extensions

DEFINE-CAS-EXPANDER and DEFCAS are analogous to DEFINE-SETF-EXPANDER and
DEFSETF, including CAS-functions similar to SETF-functions:

(defun (cas foo) (old new ...) ...)

THis is exported from SB-EXT for users to play with, and used to implement
our CAS places internally.

Add support for CAS of:

* SLOT-VALUE

* STANDARD-INSTANCE-ACCESS

* FUNCALLABLE-STANDARD-INSTANCE-ACCESS

In case of SLOT-VALUE we don't yet support any optimizations or specify
results when SLOT-VALUE-USING-CLASS or friends are in play -- perhaps later
we can add

(CAS SLOT-VALUE-USING-CLASS) &co

in order to support it for arbitrary instances.

Adding support for permutation vector optimization should not be too hard
either, but let's let the dust settle first...

Nikodemus Siivola Nikodemus Siivola 2011-06-08

added src/code/cas.lisp
added src/code/late-cas.lisp
changed doc/manual/threading.texinfo
changed src/code/cross-misc.lisp
changed src/code/early-setf.lisp
changed src/code/late-extensions.lisp
changed src/code/primordial-extensions.lisp
changed src/code/target-thread.lisp
changed src/compiler/generic/objdef.lisp
changed src/pcl/slots.lisp
changed tests/compare-and-swap.impure.lisp
changed build-order.lisp-expr
changed package-data-list.lisp-expr
src/code/cas.lisp Diff Switch to side-by-side view
Loading...
src/code/late-cas.lisp Diff Switch to side-by-side view
Loading...
doc/manual/threading.texinfo Diff Switch to side-by-side view
Loading...
src/code/cross-misc.lisp Diff Switch to side-by-side view
Loading...
src/code/early-setf.lisp Diff Switch to side-by-side view
Loading...
src/code/late-extensions.lisp Diff Switch to side-by-side view
Loading...
src/code/primordial-extensions.lisp Diff Switch to side-by-side view
Loading...
src/code/target-thread.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/objdef.lisp Diff Switch to side-by-side view
Loading...
src/pcl/slots.lisp Diff Switch to side-by-side view
Loading...
tests/compare-and-swap.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...