emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

scratch/no-purespace bb64e9464c5 34/41: Remove purespace fix from cl-pre


From: Stefan Kangas
Subject: scratch/no-purespace bb64e9464c5 34/41: Remove purespace fix from cl-preloaded.el
Date: Thu, 12 Dec 2024 16:57:52 -0500 (EST)

branch: scratch/no-purespace
commit bb64e9464c584bace441f60678b80f41ddc6e2a3
Author: Stefan Kangas <stefankangas@gmail.com>
Commit: Stefan Kangas <stefankangas@gmail.com>

    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.
---
 lisp/emacs-lisp/cl-preloaded.el | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el
index 7432cd6e4ce..f693b277a60 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]