X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fhppa%2Fsap.lisp;h=b234b39a5d57a3fa3569cd73f604e49859ca9545;hb=eda83f00e869193cb69826be5fa1086b95d12ff7;hp=669041f96318a251e0b8529dc2d25f6d7ccec404;hpb=0d74ed478e7f3af5d3292153726373763631aa8e;p=sbcl.git diff --git a/src/compiler/hppa/sap.lisp b/src/compiler/hppa/sap.lisp index 669041f..b234b39 100644 --- a/src/compiler/hppa/sap.lisp +++ b/src/compiler/hppa/sap.lisp @@ -235,6 +235,8 @@ signed-reg signed-num :long t) (def-system-ref-and-set sap-ref-sap %set-sap-ref-sap sap-reg system-area-pointer :long) + (def-system-ref-and-set sap-ref-lispobj %set-sap-ref-lispobj + descriptor-reg * :long) (def-system-ref-and-set sap-ref-single %set-sap-ref-single single-reg single-float :float) (def-system-ref-and-set sap-ref-double %set-sap-ref-double @@ -250,23 +252,3 @@ (:generator 2 (inst addi (- (* vector-data-offset n-word-bytes) other-pointer-lowtag) vector sap))) - -;;; Transforms for 64-bit SAP accessors. - -(deftransform sap-ref-64 ((sap offset) (* *)) - '(logior (ash (sap-ref-32 sap offset) 32) - (sap-ref-32 sap (+ offset 4)))) - -(deftransform signed-sap-ref-64 ((sap offset) (* *)) - '(logior (ash (signed-sap-ref-32 sap offset) 32) - (sap-ref-32 sap (+ 4 offset)))) - -(deftransform %set-sap-ref-64 ((sap offset value) (* * *)) - '(progn - (%set-sap-ref-32 sap offset (ash value -32)) - (%set-sap-ref-32 sap (+ offset 4) (logand value #xffffffff)))) - -(deftransform %set-signed-sap-ref-64 ((sap offset value) (* * *)) - '(progn - (%set-signed-sap-ref-32 sap offset (ash value -32)) - (%set-sap-ref-32 sap (+ 4 offset) (logand value #xffffffff))))