(defun is-fixnum-lowtag (lowtag)
(zerop (logand lowtag sb!vm:fixnum-tag-mask)))
+(defun is-other-immediate-lowtag (lowtag)
+ ;; The other-immediate lowtags are similar to the fixnum lowtags, in
+ ;; that they have an "effective length" that is shorter than is used
+ ;; for the pointer lowtags. Unlike the fixnum lowtags, however, the
+ ;; other-immediate lowtags are always effectively two bits wide.
+ (= (logand lowtag 3) sb!vm:other-immediate-0-lowtag))
+
(defstruct (descriptor
(:constructor make-descriptor
(high low &optional gspace word-offset))
(if (> unsigned #x1FFFFFFF)
(- unsigned #x40000000)
unsigned))))
- ((or (= lowtag sb!vm:other-immediate-0-lowtag)
- (= lowtag sb!vm:other-immediate-1-lowtag)
- #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
- (= lowtag sb!vm:other-immediate-2-lowtag)
- #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
- (= lowtag sb!vm:other-immediate-3-lowtag))
+ ((is-other-immediate-lowtag lowtag)
(format stream
"for other immediate: #X~X, type #b~8,'0B"
(ash (descriptor-bits des) (- sb!vm:n-widetag-bits))
(let ((index (read-arg ,package-len)))
(push-fop-table
(cold-load-symbol (read-arg ,pname-len)
- (svref *current-fop-table* index)))))))
+ (ref-fop-table index)))))))
(frob fop-symbol-in-package-save #.sb!vm:n-word-bytes #.sb!vm:n-word-bytes)
(frob fop-small-symbol-in-package-save 1 #.sb!vm:n-word-bytes)
(frob fop-symbol-in-byte-package-save #.sb!vm:n-word-bytes 1)
;;;; cold fops for fixing up circularities
(define-cold-fop (fop-rplaca :pushp nil)
- (let ((obj (svref *current-fop-table* (read-word-arg)))
+ (let ((obj (ref-fop-table (read-word-arg)))
(idx (read-word-arg)))
(write-memory (cold-nthcdr idx obj) (pop-stack))))
(define-cold-fop (fop-rplacd :pushp nil)
- (let ((obj (svref *current-fop-table* (read-word-arg)))
+ (let ((obj (ref-fop-table (read-word-arg)))
(idx (read-word-arg)))
(write-wordindexed (cold-nthcdr idx obj) 1 (pop-stack))))
(define-cold-fop (fop-svset :pushp nil)
- (let ((obj (svref *current-fop-table* (read-word-arg)))
+ (let ((obj (ref-fop-table (read-word-arg)))
(idx (read-word-arg)))
(write-wordindexed obj
(+ idx
(pop-stack))))
(define-cold-fop (fop-structset :pushp nil)
- (let ((obj (svref *current-fop-table* (read-word-arg)))
+ (let ((obj (ref-fop-table (read-word-arg)))
(idx (read-word-arg)))
(write-wordindexed obj (1+ idx) (pop-stack))))
(defconstant new-directory-core-entry-type-code 3861)
(defconstant initial-fun-core-entry-type-code 3863)
(defconstant page-table-core-entry-type-code 3880)
-#!+(and sb-lutex sb-thread)
-(defconstant lutex-table-core-entry-type-code 3887)
(defconstant end-core-entry-type-code 3840)
(declaim (ftype (function (sb!vm:word) sb!vm:word) write-word))