(let* ((addr (sb-kernel:get-lisp-obj-address object))
(space
(cond ((< sb-vm:read-only-space-start addr
- (* sb-vm:*read-only-space-free-pointer*
- sb-vm:n-word-bytes))
+ (ash sb-vm:*read-only-space-free-pointer*
+ sb-vm:n-fixnum-tag-bits))
:read-only)
((< sb-vm:static-space-start addr
- (* sb-vm:*static-space-free-pointer*
- sb-vm:n-word-bytes))
+ (ash sb-vm:*static-space-free-pointer*
+ sb-vm:n-fixnum-tag-bits))
:static)
((< (sb-kernel:current-dynamic-space-start) addr
(sb-sys:sap-int (sb-kernel:dynamic-space-free-pointer)))
;; WITHOUT-GCING implies WITHOUT-INTERRUPTS
(or
(without-gcing
- (let* ((pointer *static-space-free-pointer*) ; in words
- (free (* pointer n-word-bytes))
- (vector (logior free other-pointer-lowtag)) ; in bytes, yay
+ (let* ((pointer (ash *static-space-free-pointer* n-fixnum-tag-bits))
+ (vector (logior pointer other-pointer-lowtag))
;; rounded to dual word boundary
(nwords (logandc2 (+ lowtag-mask (+ words vector-data-offset 1))
lowtag-mask))
- (new-pointer (+ *static-space-free-pointer* nwords))
- (new-free (* new-pointer n-word-bytes)))
- (when (> static-space-end new-free)
+ (new-pointer (+ pointer (ash nwords word-shift))))
+ (when (> static-space-end new-pointer)
(store-word widetag
vector 0 other-pointer-lowtag)
- (store-word (ash length word-shift)
+ (store-word (fixnumize length)
vector vector-length-slot other-pointer-lowtag)
- (store-word 0 new-free)
- (setf *static-space-free-pointer* new-pointer)
+ (store-word 0 new-pointer)
+ (setf *static-space-free-pointer*
+ (ash new-pointer (- n-fixnum-tag-bits)))
(%make-lisp-obj vector))))
(error 'simple-storage-condition
:format-control "Not enough memory left in static space to ~
#!-gencgc
(and (logbitp 0 val)
(or (< sb!vm:read-only-space-start val
- (* sb!vm:*read-only-space-free-pointer*
- sb!vm:n-word-bytes))
+ (ash sb!vm:*read-only-space-free-pointer*
+ sb!vm:n-fixnum-tag-bits))
(< sb!vm:static-space-start val
- (* sb!vm:*static-space-free-pointer*
- sb!vm:n-word-bytes))
+ (ash sb!vm:*static-space-free-pointer*
+ sb!vm:n-fixnum-tag-bits))
(< (current-dynamic-space-start) val
(sap-int (dynamic-space-free-pointer))))))
(values (%make-lisp-obj val) t)
(current-dynamic-space-start))))
(defun static-space-usage ()
- (- (* sb!vm:*static-space-free-pointer* sb!vm:n-word-bytes)
+ (- (ash sb!vm:*static-space-free-pointer* sb!vm:n-fixnum-tag-bits)
sb!vm:static-space-start))
(defun read-only-space-usage ()
- (- (* sb!vm::*read-only-space-free-pointer* sb!vm:n-word-bytes)
+ (- (ash sb!vm::*read-only-space-free-pointer* sb!vm:n-fixnum-tag-bits)
sb!vm:read-only-space-start))
(defun control-stack-usage ()
(ecase space
(:static
(values (int-sap static-space-start)
- (int-sap (* *static-space-free-pointer* n-word-bytes))))
+ (int-sap (ash *static-space-free-pointer* n-fixnum-tag-bits))))
(:read-only
(values (int-sap read-only-space-start)
- (int-sap (* *read-only-space-free-pointer* n-word-bytes))))
+ (int-sap (ash *read-only-space-free-pointer* n-fixnum-tag-bits))))
(:dynamic
(values (int-sap (current-dynamic-space-start))
(dynamic-space-free-pointer)))))