X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-sap.lisp;h=edb3a1686907d4eff76ff9677381bfdd0701b171;hb=f7faed97898dd0e94a18b0d1fca03aaa0fe24ab0;hp=13b50374a226af2e321bef4535fb3131843acd4f;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/src/code/target-sap.lisp b/src/code/target-sap.lisp index 13b5037..edb3a16 100644 --- a/src/code/target-sap.lisp +++ b/src/code/target-sap.lisp @@ -41,7 +41,7 @@ ;;; Return a new SAP, OFFSET bytes from SAP. (defun sap+ (sap offset) (declare (type system-area-pointer sap) - (fixnum offset)) + (type (signed-byte #.sb!vm:n-word-bits) offset)) (sap+ sap offset)) ;;; Return the byte offset between SAP1 and SAP2. @@ -95,6 +95,12 @@ (fixnum offset)) (sap-ref-sap sap offset)) +;; Return the LISPOBJ at OFFSET bytes from SAP. +(defun sap-ref-lispobj (sap offset) + (declare (type system-area-pointer sap) + (fixnum offset)) + (sap-ref-lispobj sap offset)) + ;;; Return the 32-bit SINGLE-FLOAT at OFFSET bytes from SAP. (defun sap-ref-single (sap offset) (declare (type system-area-pointer sap) @@ -209,6 +215,12 @@ (fixnum offset)) (setf (sap-ref-sap sap offset) new-value)) +(defun %set-sap-ref-lispobj (sap offset new-value) + (declare (type system-area-pointer sap) + (fixnum offset) + (t new-value)) + (setf (sap-ref-lispobj sap offset) new-value)) + (defun %set-sap-ref-single (sap offset new-value) (declare (type system-area-pointer sap) (fixnum offset)