X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Froom.lisp;h=7e05a7e18ea5cbbe60eab59b4895b3d578b20f5c;hb=a160917364f85b38dc0826a5e3dcef87e3c4c62c;hp=bb91438454d45d4a39e1fcccb0d18e8e72d40492;hpb=367316f5f21281204393853910848fea7fb9a6ab;p=sbcl.git diff --git a/src/code/room.lisp b/src/code/room.lisp index bb91438..7e05a7e 100644 --- a/src/code/room.lisp +++ b/src/code/room.lisp @@ -214,7 +214,7 @@ ;; will be a short. On platforms with larger ones, it'll ;; be an int. (bytes-used (unsigned - #.(if (typep sb!vm:gencgc-page-size + #.(if (typep sb!vm:gencgc-page-bytes '(unsigned-byte 16)) 16 32))) @@ -237,6 +237,9 @@ (if careful (make-lisp-obj tagged-address nil) (values (%make-lisp-obj tagged-address) t)))) + ;; Inlining MAKE-OBJ reduces consing on platforms where dynamic + ;; space extends past fixnum range. + (declare (inline make-obj)) (without-gcing (multiple-value-bind (start end) (space-bounds space) (declare (type system-area-pointer start end)) @@ -259,7 +262,7 @@ (maybe-skip-page () #!+gencgc (when (eq space :dynamic) - (loop with page-mask = #.(1- sb!vm:gencgc-page-size) + (loop with page-mask = #.(1- sb!vm:gencgc-page-bytes) for addr of-type sb!vm:word = (sap-int current) while (>= addr skip-tests-until-addr) do @@ -291,7 +294,7 @@ (return-from maybe-skip-page)) ;; Move CURRENT to start of next page. (setf current (int-sap (+ (logandc2 addr page-mask) - sb!vm:gencgc-page-size))) + sb!vm:gencgc-page-bytes))) (maybe-finish-mapping)))))) (maybe-map (obj obj-tag n-obj-bytes &optional (ok t)) (let ((next (typecase n-obj-bytes