-(dolist (fun '(sap-ref-8 %set-sap-ref-8
- signed-sap-ref-8 %set-signed-sap-ref-8
- sap-ref-16 %set-sap-ref-16
- signed-sap-ref-16 %set-signed-sap-ref-16
- sap-ref-32 %set-sap-ref-32
- signed-sap-ref-32 %set-signed-sap-ref-32
- sap-ref-sap %set-sap-ref-sap
- sap-ref-single %set-sap-ref-single
- sap-ref-double %set-sap-ref-double
- #!+(or x86 long-float) sap-ref-long
- #!+long-float %set-sap-ref-long))
- (deftransform fun ((sap offset) '* '* :eval-name t)
- (extract-function-args sap 'sap+ 2)
- `(lambda (sap offset1 offset2)
- (,fun sap (+ offset1 offset2)))))
+(macrolet ((def (fun)
+ `(deftransform ,fun ((sap offset) * *)
+ (extract-fun-args sap 'sap+ 2)
+ `(lambda (sap offset1 offset2)
+ (,',fun sap (+ offset1 offset2))))))
+ (def sap-ref-8)
+ (def %set-sap-ref-8)
+ (def signed-sap-ref-8)
+ (def %set-signed-sap-ref-8)
+ (def sap-ref-16)
+ (def %set-sap-ref-16)
+ (def signed-sap-ref-16)
+ (def %set-signed-sap-ref-16)
+ (def sap-ref-32)
+ (def %set-sap-ref-32)
+ (def signed-sap-ref-32)
+ (def %set-signed-sap-ref-32)
+ (def sap-ref-sap)
+ (def %set-sap-ref-sap)
+ (def sap-ref-single)
+ (def %set-sap-ref-single)
+ (def sap-ref-double)
+ (def %set-sap-ref-double)
+ ;; 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))