1.0.1.18:
[sbcl.git] / src / compiler / saptran.lisp
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)