:kind :fixed
:length size))))))
-(dolist (code (list complex-base-string-widetag simple-array-widetag
+(dolist (code (list #!+sb-unicode complex-character-string-widetag
+ complex-base-string-widetag simple-array-widetag
complex-bit-vector-widetag complex-vector-widetag
complex-array-widetag complex-vector-nil-widetag))
(setf (svref *meta-room-info* code)
(simple-array-unsigned-byte-16-widetag . 1)
(simple-array-unsigned-byte-31-widetag . 2)
(simple-array-unsigned-byte-32-widetag . 2)
+ (simple-array-unsigned-byte-60-widetag . 3)
+ (simple-array-unsigned-byte-63-widetag . 3)
+ (simple-array-unsigned-byte-64-widetag . 3)
(simple-array-signed-byte-8-widetag . 0)
(simple-array-signed-byte-16-widetag . 1)
(simple-array-unsigned-byte-29-widetag . 2)
(simple-array-signed-byte-30-widetag . 2)
(simple-array-signed-byte-32-widetag . 2)
+ (simple-array-signed-byte-61-widetag . 3)
+ (simple-array-signed-byte-64-widetag . 3)
(simple-array-single-float-widetag . 2)
(simple-array-double-float-widetag . 3)
(simple-array-complex-single-float-widetag . 3)
(let* ((name (car stuff))
(size (cdr stuff))
(sname (string name)))
- (setf (svref *meta-room-info* (symbol-value name))
- (make-room-info :name (intern (subseq sname
- 0
- (mismatch sname "-WIDETAG"
- :from-end t)))
- :kind :vector
- :length size))))
+ (when (boundp name)
+ (setf (svref *meta-room-info* (symbol-value name))
+ (make-room-info :name (intern (subseq sname
+ 0
+ (mismatch sname "-WIDETAG"
+ :from-end t)))
+ :kind :vector
+ :length size)))))
(setf (svref *meta-room-info* simple-base-string-widetag)
(make-room-info :name 'simple-base-string
:kind :string
:length 0))
+#!+sb-unicode
+(setf (svref *meta-room-info* simple-character-string-widetag)
+ (make-room-info :name 'simple-character-string
+ :kind :string
+ :length 2))
+
(setf (svref *meta-room-info* simple-array-nil-widetag)
(make-room-info :name 'simple-array-nil
:kind :fixed
(values (int-sap read-only-space-start)
(int-sap (* *read-only-space-free-pointer* n-word-bytes))))
(:dynamic
- (values (int-sap #!+gencgc dynamic-space-start
- #!-gencgc (current-dynamic-space-start))
+ (values (int-sap (current-dynamic-space-start))
(dynamic-space-free-pointer)))))
;;; Return the total number of bytes used in SPACE.
#+nil
(prev nil))
(loop
- (let* ((header (sap-ref-32 current 0))
+ (let* ((header (sap-ref-word current 0))
(header-widetag (logand header #xFF))
(info (svref *room-info* header-widetag)))
(cond
(%primitive code-instructions obj))))
(incf code-words words)
(dotimes (i words)
- (when (zerop (sap-ref-32 sap (* i n-word-bytes)))
+ (when (zerop (sap-ref-word sap (* i n-word-bytes)))
(incf no-ops))))))
space)
#.single-float-widetag
#.double-float-widetag
#.simple-base-string-widetag
+ #!+sb-unicode #.simple-character-string-widetag
#.simple-array-nil-widetag
#.simple-bit-vector-widetag
#.simple-array-unsigned-byte-2-widetag
#.simple-array-unsigned-byte-32-widetag
#.simple-array-signed-byte-8-widetag
#.simple-array-signed-byte-16-widetag
- #.simple-array-signed-byte-30-widetag
+ ; #.simple-array-signed-byte-30-widetag
#.simple-array-signed-byte-32-widetag
#.simple-array-single-float-widetag
#.simple-array-double-float-widetag
(values)))
\f
;;; Print a breakdown by instance type of all the instances allocated
-;;; in SPACE. If TOP-N is true, print only information for the the
+;;; in SPACE. If TOP-N is true, print only information for the
;;; TOP-N types with largest usage.
(defun instance-usage (space &key (top-n 15))
(declare (type spaces space) (type (or fixnum null) top-n))