X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcas.lisp;h=04f6aa24ff4980433b7d5239c2607a630c07b91c;hb=625c9493a8a7b5186144d21302437cf4f4f3571c;hp=9fcb00674bf32de395b79cb3127ed427335737b9;hpb=b71b8da241791687e7752f917ca032d937ba2bbf;p=sbcl.git diff --git a/src/code/cas.lisp b/src/code/cas.lisp index 9fcb006..04f6aa2 100644 --- a/src/code/cas.lisp +++ b/src/code/cas.lisp @@ -8,7 +8,9 @@ ;;;; DEFCAS, and #'(CAS ...) functions -- making things mostly isomorphic with ;;;; SETF. -(defglobal **cas-expanders** (make-hash-table :test #'eq :synchronized t)) +(defglobal **cas-expanders** (make-hash-table :test #'eq + #-sb-xc-host #-sb-xc-host + :synchronized t)) (define-function-name-syntax cas (list) (destructuring-bind (cas symbol) list @@ -42,12 +44,21 @@ EXPERIMENTAL: Interface subject to change." (defun get-cas-expansion (place &optional environment) #!+sb-doc - "Analogous to GET-SETF-EXPANSION. Return six values needed by the CAS -machinary: a list of temporary variables, a list of values to which they must -be bound, a temporary variable for the old value of PLACE, a temporary value -for the new value of PLACE, a form using the aforementioned temporaries -which performs the compare-and-swap operation, and a form using the aforementioned -temporaries with which to perform a volatile read of the place. + "Analogous to GET-SETF-EXPANSION. Returns the following six values: + + * list of temporary variables + + * list of value-forms whose results those variable must be bound + + * temporary variable for the old value of PLACE + + * temporary variable for the new value of PLACE + + * form using the aforementioned temporaries which performs the + compare-and-swap operation on PLACE + + * form using the aforementioned temporaries with which to perform a volatile + read of PLACE Example: