Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

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 build-order.lisp-expr
changed doc
changed doc/manual
changed doc/manual/threading.texinfo
changed package-data-list.lisp-expr
changed src
changed src/code
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
changed src/compiler/generic
changed src/compiler/generic/objdef.lisp
changed src/pcl
changed src/pcl/slots.lisp
changed tests
changed tests/compare-and-swap.impure.lisp
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...
build-order.lisp-expr Diff Switch to side-by-side view
Loading...
doc
Directory.
doc/manual
Directory.
doc/manual/threading.texinfo Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...
src
Directory.
src/code
Directory.
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
Directory.
src/compiler/generic/objdef.lisp Diff Switch to side-by-side view
Loading...
src/pcl
Directory.
src/pcl/slots.lisp Diff Switch to side-by-side view
Loading...
tests
Directory.
tests/compare-and-swap.impure.lisp Diff Switch to side-by-side view
Loading...