X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fsaptran.lisp;h=9f2c643bc55be1eab1312234e7cc10697dab3131;hb=8886298f2c0e50e595cf481c426b6331ab898a23;hp=cf84c28133cfe4c9f56ddcbd28b589ef28133aef;hpb=d604a358d8e5eb5587989e0a4f1d31dbe6ac5ffe;p=sbcl.git diff --git a/src/compiler/saptran.lisp b/src/compiler/saptran.lisp index cf84c28..9f2c643 100644 --- a/src/compiler/saptran.lisp +++ b/src/compiler/saptran.lisp @@ -166,39 +166,39 @@ '(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)