X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdefsetfs.lisp;h=af7d31e95d6ba53388d686b03d735dba8ab3f322;hb=b14a61c6af3e3005c94e633e727177346240066e;hp=e066ecaacbef8ef743fd48f296fb3af9c28b732d;hpb=edcaad65452eee6bff2017941ef6c33b26a5a2b0;p=sbcl.git diff --git a/src/code/defsetfs.lisp b/src/code/defsetfs.lisp index e066eca..af7d31e 100644 --- a/src/code/defsetfs.lisp +++ b/src/code/defsetfs.lisp @@ -53,8 +53,11 @@ ;;; from early-setf.lisp (in-package "SB!IMPL") -;;; KLUDGE: Various of these (e.g. AREF and BIT) have DEFUN (SETF FOO) versions -;;; too. Do we really need both? -- WHN 19990921 +;;; (setf aref/bit/sbit) are implemented using setf-functions, +;;; because they have to work with (setf (apply #'aref array subscripts)) +;;; All other setfs can be done using setf-functions too, but I +;;; haven't found technical advantages or disatvantages for either +;;; scheme. #-sb-xc-host (defsetf car %rplaca) #-sb-xc-host (defsetf cdr %rplacd) #-sb-xc-host (defsetf caar (x) (v) `(%rplaca (car ,x) ,v)) @@ -97,17 +100,14 @@ #-sb-xc-host (defsetf tenth (x) (v) `(%rplaca (cdr (cddddr (cddddr ,x))) ,v)) #-sb-xc-host (defsetf rest %rplacd) #-sb-xc-host (defsetf elt %setelt) -#-sb-xc-host (defsetf aref %aset) #-sb-xc-host (defsetf row-major-aref %set-row-major-aref) #-sb-xc-host (defsetf svref %svset) #-sb-xc-host (defsetf char %charset) -#-sb-xc-host (defsetf bit %bitset) #-sb-xc-host (defsetf schar %scharset) -#-sb-xc-host (defsetf sbit %sbitset) (defsetf %array-dimension %set-array-dimension) -(defsetf sb!kernel:%raw-bits sb!kernel:%set-raw-bits) (defsetf sb!kernel:%vector-raw-bits sb!kernel:%set-vector-raw-bits) #-sb-xc-host (defsetf symbol-value set) +#-sb-xc-host (defsetf symbol-global-value set-symbol-global-value) #-sb-xc-host (defsetf symbol-plist %set-symbol-plist) #-sb-xc-host (defsetf nth %setnth) #-sb-xc-host (defsetf fill-pointer %set-fill-pointer) @@ -122,6 +122,7 @@ (defsetf sap-ref-word %set-sap-ref-word) (defsetf signed-sap-ref-word %set-signed-sap-ref-word) (defsetf sap-ref-sap %set-sap-ref-sap) +(defsetf sap-ref-lispobj %set-sap-ref-lispobj) (defsetf sap-ref-single %set-sap-ref-single) (defsetf sap-ref-double %set-sap-ref-double) #!+long-float (defsetf sap-ref-long %set-sap-ref-long) @@ -136,7 +137,6 @@ ;;; from kernel.lisp (in-package "SB!KERNEL") (defsetf code-header-ref code-header-set) -(defsetf %raw-bits %set-raw-bits) ;;; from serve-event.lisp (in-package "SB!IMPL")