From: Stefan Kangas Date: Mon, 9 Dec 2024 20:34:57 +0000 (+0100) Subject: Remove purespace fix from cl-preloaded.el X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=17108bea61d39604522594c4ea1da432b464beb2;p=emacs.git Remove purespace fix from cl-preloaded.el * lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Remove fix for purespace. This effectively reverts Stefan Monnier's commit e785c74d3a88. (cherry picked from commit bb64e9464c584bace441f60678b80f41ddc6e2a3) --- diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el index 664206a3771..0399b179125 100644 --- a/lisp/emacs-lisp/cl-preloaded.el +++ b/lisp/emacs-lisp/cl-preloaded.el @@ -183,20 +183,7 @@ (add-to-list 'current-load-list `(define-type . ,name)) (cl--struct-register-child parent-class tag) (unless (or (eq named t) (eq tag name)) - ;; We used to use `defconst' instead of `set' but that - ;; has a side-effect of purecopying during the dump, so that the - ;; class object stored in the tag ends up being a *copy* of the - ;; one stored in the `cl--class' property! We could have fixed - ;; this needless duplication by using the purecopied object, but - ;; that then breaks down a bit later when we modify the - ;; cl-structure-class class object to close the recursion - ;; between cl-structure-object and cl-structure-class (because - ;; modifying purecopied objects is not allowed. Since this is - ;; done during dumping, we could relax this rule and allow the - ;; modification, but it's cumbersome). - ;; So in the end, it's easier to just avoid the duplication by - ;; avoiding the use of the purespace here. - (set tag class) + (eval `(defconst ,tag ',class) t) ;; In the cl-generic support, we need to be able to check ;; if a vector is a cl-struct object, without knowing its particular type. ;; So we use the (otherwise) unused function slots of the tag symbol