Halve the size of immobile cards

This commit is contained in:
Douglas Katzman 2026-04-07 23:09:56 -04:00
parent 1da3c086e7
commit e972a1a2b8
2 changed files with 4 additions and 4 deletions

View file

@ -42,7 +42,7 @@
;;; the start of objects.
(defconstant gencgc-alloc-granularity 0)
;;; The card size for immobile/low space
(defconstant immobile-card-bytes 4096)
(defconstant immobile-card-bytes 2048)
;;; ### Note: 'lispword' always means 8 bytes, and 'word' usually means
;;; the same as 'lispword', except in the assembler and disassembler,

View file

@ -13,8 +13,8 @@ then
stdout=$TEST_DIRECTORY/$TEST_FILESTEM.out
stderr=$TEST_DIRECTORY/$TEST_FILESTEM.err
run_sbcl >$stdout 2>$stderr <<EOF
;; Immobile pages have physical protection, so it's unlikely that it would be wrong.
;; However, the verifier was never actually checking.
;; Mark a page as logically protected when it should not be, and confirm that
;; the heap invariant checker finds an error.
(assert (= (sb-kernel:generation-of '*posix-argv*) sb-vm:+pseudo-static-generation+))
(assert (< (sb-kernel:generation-of *posix-argv*) sb-vm:+pseudo-static-generation+))
(define-alien-type nil
@ -29,7 +29,7 @@ then
(setf (extern-alien "pre_verify_gen_0" char) 1)
(let ((i (floor (- (sb-kernel:get-lisp-obj-address '*posix-argv*)
sb-vm:fixedobj-space-start)
4096)))
sb-vm:immobile-card-bytes)))
;; Mark it as-if write-protected (though without using mprotect)
;; This constant is defined in immobile-space.c: #define WRITE_PROTECT 0x80
(setf (slot (deref fixedobj-pages i) 'flags) 128)