sbcl.sbcl/tests/map-refs.pure.lisp
2024-04-30 14:56:33 +03:00

19 lines
1,003 B
Common Lisp

;;; Make sure MAP-REFERENCING-OBJECTS doesn't spuriously treat raw bits as
;;; potential pointers. Also make sure it sees the SYMBOL-INFO slot.
(defstruct afoo (slot nil :type sb-ext:word))
(defvar *afoo* (make-afoo :slot (sb-kernel:get-lisp-obj-address '*posix-argv*)))
(with-test (:name :map-referencing-objs
:broken-on :mark-region-gc)
(sb-vm::map-referencing-objects (lambda (x) (assert (not (typep x 'afoo))))
:dynamic '*posix-argv*)
(let ((v (sb-kernel:symbol-%info 'satisfies)) referers)
(sb-vm::map-referencing-objects (lambda (referer) (push referer referers))
#+generational :dynamic #-generational :static v)
#+immobile-space
(sb-vm::map-referencing-objects (lambda (referer) (push referer referers))
:immobile v)
(assert (member 'satisfies referers))))
(with-test (:name :hexdump) ; Don't crash, that's all
(sb-vm:hexdump (1+ most-positive-fixnum)))