"%SET-VECTOR-RAW-BITS"
"%SET-SAP-REF-16" "%SET-SAP-REF-32" "%SET-SAP-REF-64"
"%SET-SAP-REF-WORD" "%SET-SAP-REF-8" "%SET-SAP-REF-DOUBLE"
- "%SET-SAP-REF-LONG" "%SET-SAP-REF-SAP"
+ "%SET-SAP-REF-LISPOBJ" "%SET-SAP-REF-LONG" "%SET-SAP-REF-SAP"
"%SET-SAP-REF-SINGLE" "%SET-SIGNED-SAP-REF-16"
"%SET-SIGNED-SAP-REF-32" "%SET-SIGNED-SAP-REF-64"
"%SET-SIGNED-SAP-REF-WORD"
"SAP-INT"
"SAP-REF-16" "SAP-REF-32" "SAP-REF-64" "SAP-REF-WORD"
"SAP-REF-8"
- "SAP-REF-DOUBLE" "SAP-REF-LONG"
+ "SAP-REF-DOUBLE" "SAP-REF-LISPOBJ" "SAP-REF-LONG"
"SAP-REF-SAP" "SAP-REF-SINGLE"
"SAP<" "SAP<=" "SAP=" "SAP>" "SAP>="
"SCRUB-CONTROL-STACK" "SERVE-ALL-EVENTS"
(defsetf sap-ref-word %set-sap-ref-word)
(defsetf signed-sap-ref-word %set-signed-sap-ref-word)
(defsetf sap-ref-sap %set-sap-ref-sap)
+(defsetf sap-ref-lispobj %set-sap-ref-lispobj)
(defsetf sap-ref-single %set-sap-ref-single)
(defsetf sap-ref-double %set-sap-ref-double)
#!+long-float (defsetf sap-ref-long %set-sap-ref-long)
(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)
(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)
signed-reg signed-num :quad t)
(def-system-ref-and-set sap-ref-sap %set-sap-ref-sap
sap-reg system-area-pointer :quad)
+ (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 :single)
(def-system-ref-and-set sap-ref-double %set-sap-ref-double
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
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 :single)
(def-system-ref-and-set sap-ref-double %set-sap-ref-double
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 :single)
(def-system-ref-and-set sap-ref-double %set-sap-ref-double
(defsapref signed-sap-ref-64 (signed-byte 64))
(defsapref signed-sap-ref-word (signed-byte #.sb!vm:n-word-bits))
(defsapref sap-ref-sap system-area-pointer)
+ (defsapref sap-ref-lispobj t)
(defsapref sap-ref-single single-float)
(defsapref sap-ref-double double-float)
(defsapref sap-ref-long long-float)
(def %set-signed-sap-ref-64 t (signed-byte 64))
(def sap-ref-sap)
(def %set-sap-ref-sap t system-area-pointer)
+ (def sap-ref-lispobj)
+ (def %set-sap-ref-lispobj t t)
(def sap-ref-single)
(def %set-sap-ref-single t single-float)
(def sap-ref-double)
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 :single)
(def-system-ref-and-set sap-ref-double %set-sap-ref-double
(def-system-ref-and-set signed-sap-ref-64 %set-signed-sap-ref-64 mov
signed-reg signed-num :qword)
(def-system-ref-and-set sap-ref-sap %set-sap-ref-sap mov
- sap-reg system-area-pointer :qword))
+ sap-reg system-area-pointer :qword)
+ (def-system-ref-and-set sap-ref-lispobj %set-sap-ref-lispobj mov
+ descriptor-reg * :qword))
\f
;;;; SAP-REF-DOUBLE
(def-system-ref-and-set sb!c::signed-sap-ref-32-with-offset sb!c::%set-signed-sap-ref-32-with-offset
signed-reg signed-num :dword t)
(def-system-ref-and-set sb!c::sap-ref-sap-with-offset sb!c::%set-sap-ref-sap-with-offset
- sap-reg system-area-pointer :dword))
+ sap-reg system-area-pointer :dword)
+ (def-system-ref-and-set sb!c::sap-ref-lispobj-with-offset sb!c::%set-sap-ref-lispobj-with-offset
+ descriptor-reg * :dword))
\f
;;;; SAP-REF-DOUBLE