;;;; DEFKNOWNs
#!+linkage-table
-(deftransform foreign-symbol-address-as-integer ((symbol &optional datap)
- (simple-string boolean))
+(deftransform foreign-symbol-address ((symbol &optional datap) (simple-string boolean))
(if (and (constant-lvar-p symbol) (constant-lvar-p datap))
- `(sap-int (foreign-symbol-address symbol datap))
+ `(sap-int (foreign-symbol-sap symbol datap))
(give-up-ir1-transform)))
-(deftransform foreign-symbol-address ((symbol &optional datap)
+(deftransform foreign-symbol-sap ((symbol &optional datap)
(simple-string &optional boolean))
#!-linkage-table
(if (null datap)
(give-up-ir1-transform)
- `(foreign-symbol-address symbol))
+ `(foreign-symbol-sap symbol))
#!+linkage-table
(if (and (constant-lvar-p symbol) (constant-lvar-p datap))
(let ((name (lvar-value symbol))
(if (or #+sb-xc-host t ; only static symbols on host
(not datap)
(find-foreign-symbol-in-table name *static-foreign-symbols*))
- `(foreign-symbol-address ,name) ; VOP
- `(foreign-symbol-dataref-address ,name))) ; VOP
+ `(foreign-symbol-sap ,name) ; VOP
+ `(foreign-symbol-dataref-sap ,name))) ; VOP
(give-up-ir1-transform)))
(defknown (sap< sap<= sap= sap>= sap>)
(defknown sap+ (system-area-pointer integer) system-area-pointer
(movable flushable))
-(defknown sap- (system-area-pointer system-area-pointer) (signed-byte 32)
+(defknown sap- (system-area-pointer system-area-pointer)
+ (signed-byte #.sb!vm::n-word-bits)
(movable flushable))
-(defknown sap-int (system-area-pointer) (unsigned-byte #!-alpha 32 #!+alpha 64)
+(defknown sap-int (system-area-pointer)
+ (unsigned-byte #.sb!vm::n-machine-word-bits)
(movable flushable))
-(defknown int-sap ((unsigned-byte #!-alpha 32 #!+alpha 64))
+(defknown int-sap ((unsigned-byte #.sb!vm::n-machine-word-bits))
system-area-pointer (movable))
(defknown sap-ref-8 (system-area-pointer fixnum) (unsigned-byte 8)
(unsigned-byte 64)
())
+(defknown sap-ref-word (system-area-pointer fixnum)
+ (unsigned-byte #.sb!vm::n-machine-word-bits)
+ (flushable))
+(defknown %set-sap-ref-word
+ (system-area-pointer fixnum (unsigned-byte #.sb!vm::n-machine-word-bits))
+ (unsigned-byte #.sb!vm::n-machine-word-bits)
+ ())
+
(defknown signed-sap-ref-8 (system-area-pointer fixnum) (signed-byte 8)
(flushable))
(defknown %set-signed-sap-ref-8 (system-area-pointer fixnum (signed-byte 8))
(signed-byte 64)
())
+(defknown signed-sap-ref-word (system-area-pointer fixnum)
+ (signed-byte #.sb!vm::n-machine-word-bits)
+ (flushable))
+(defknown %set-signed-sap-ref-word
+ (system-area-pointer fixnum (signed-byte #.sb!vm::n-machine-word-bits))
+ (signed-byte #.sb!vm::n-machine-word-bits)
+ ())
+
(defknown sap-ref-sap (system-area-pointer fixnum) system-area-pointer
(flushable))
(defknown %set-sap-ref-sap (system-area-pointer fixnum system-area-pointer)
;; redundancy. --njf 2002-01-08
#!+long-float (def sap-ref-long)
#!+long-float (def %set-sap-ref-long))
+
+(macrolet ((def (fun args 32-bit 64-bit)
+ `(deftransform ,fun (,args)
+ (ecase sb!vm::n-word-bits
+ (32 '(,32-bit ,@args))
+ (64 '(,64-bit ,@args))))))
+ (def sap-ref-word (sap offset) sap-ref-32 sap-ref-64)
+ (def signed-sap-ref-word (sap offset) signed-sap-ref-32 signed-sap-ref-64)
+ (def %set-sap-ref-word (sap offset value)
+ %set-sap-ref-32 %set-sap-ref-64)
+ (def %set-signed-sap-ref-word (sap offset value)
+ %set-signed-sap-ref-32 %set-signed-sap-ref-64))