0.9.13.8:
authorChristophe Rhodes <csr21@cam.ac.uk>
Sun, 28 May 2006 14:35:43 +0000 (14:35 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Sun, 28 May 2006 14:35:43 +0000 (14:35 +0000)
Fix the compiler transform for %set-sap-ref-foo and sap+

src/compiler/saptran.lisp
version.lisp-expr

index cf84c28..9f2c643 100644 (file)
          '(lambda (sap offset1 offset2)
             (sap+ sap (+ offset1 offset2))))))
 
-(macrolet ((def (fun)
-             `(deftransform ,fun ((sap offset) * *)
+(macrolet ((def (fun &optional setp)
+             `(deftransform ,fun ((sap offset ,@(when setp `(new-value))) * *)
                 (extract-fun-args sap 'sap+ 2)
-                 `(lambda (sap offset1 offset2)
-                   (,',fun sap (+ offset1 offset2))))))
+                 `(lambda (sap offset1 offset2 ,@',(when setp `(new-value)))
+                   (,',fun sap (+ offset1 offset2) ,@',(when setp `(new-value)))))))
   (def sap-ref-8)
-  (def %set-sap-ref-8)
+  (def %set-sap-ref-8 t)
   (def signed-sap-ref-8)
-  (def %set-signed-sap-ref-8)
+  (def %set-signed-sap-ref-8 t)
   (def sap-ref-16)
-  (def %set-sap-ref-16)
+  (def %set-sap-ref-16 t)
   (def signed-sap-ref-16)
-  (def %set-signed-sap-ref-16)
+  (def %set-signed-sap-ref-16 t)
   (def sap-ref-32)
-  (def %set-sap-ref-32)
+  (def %set-sap-ref-32 t)
   (def signed-sap-ref-32)
-  (def %set-signed-sap-ref-32)
+  (def %set-signed-sap-ref-32 t)
   (def sap-ref-64)
-  (def %set-sap-ref-64)
+  (def %set-sap-ref-64 t)
   (def signed-sap-ref-64)
-  (def %set-signed-sap-ref-64)
+  (def %set-signed-sap-ref-64 t)
   (def sap-ref-sap)
-  (def %set-sap-ref-sap)
+  (def %set-sap-ref-sap t)
   (def sap-ref-single)
-  (def %set-sap-ref-single)
+  (def %set-sap-ref-single t)
   (def sap-ref-double)
-  (def %set-sap-ref-double)
+  (def %set-sap-ref-double t)
   ;; The original CMUCL code had #!+(and x86 long-float) for this first one,
   ;; but only #!+long-float for the second.  This was redundant, since the
   ;; LONG-FLOAT target feature only exists on X86.  So we removed the
   ;; redundancy.  --njf 2002-01-08
   #!+long-float (def sap-ref-long)
-  #!+long-float (def %set-sap-ref-long))
+  #!+long-float (def %set-sap-ref-long t))
 
 (macrolet ((def (fun args 32-bit 64-bit)
                `(deftransform ,fun (,args)
index c5022ea..12a5ae5 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.13.7"
+"0.9.13.8"