emacs-devel
[Top][All Lists]
Advanced

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

Re: Skipping unexec via a big .elc file


From: Ken Raeburn
Subject: Re: Skipping unexec via a big .elc file
Date: Wed, 11 Jan 2017 01:32:43 -0500

> On Jan 10, 2017, at 12:19, Eli Zaretskii <address@hidden> wrote:
> 
>> From: Andreas Schwab <address@hidden>
>> Date: Tue, 10 Jan 2017 10:46:25 +0100
>> Cc: address@hidden
>> 
>> On Jan 09 2017, Stefan Monnier <address@hidden> wrote:
>> 
>>> Eli wrote:
>>>> Multiple args to , are not supported: ((\, (quote set-window-parameter)) 
>>>> temp (\, (quote set-window-parameter)) end)
>>> 
>>> Hmm... I don't understand this.  This message seems to come from
>>> backquote.el:
>>> 
>>>   ((eq (car s) backquote-unquote-symbol)
>>>    (if (<= level 0)
>>>        (cond
>>>         ((> (length s) 2)
>>>          ;; We could support it with: (cons 2 `(list . ,(cdr s)))
>>>          ;; But let's not encourage such uses.
>>>          (error "Multiple args to , are not supported: %S" s))
>>>         (t (cons (if (eq (car-safe (nth 1 s)) 'quote) 0 1)
>>>                  (nth 1 s))))
>>>      (backquote-delay-process s (1- level))))
>>> 
>>> but then `s` should have \, in its car, whereas the above message
>>> indicates that (car s) is (\, (quote set-window-parameter)) which
>>> implies we should not have entered this branch.
>> 
>> That can only mean that something clobbered backquote-unquote-symbol.
> 
> Yes, the value of backquote-unquote-symbol at this point is indeed
> this:
> 
>   (\, (quote set-window-parameter))
> 
> I guess something is wrong with reading dumped.elc?

At the moment it’s looking to me like it might be a problem with my #N# patch 
for writing out symbols.  It got a little more of a speedup reading dumped.elc, 
but if I drop that change, I get a lot further in trying to bootstrap the tree 
with your change.  It still fails while processing the “leim” directory, though.

Indeed, looking at dumped.elc, I see:
  (#35# '#5646# '#218#)
where 35 is set-default, 5646 is backquote-unquote-symbol, and 218 is 
,’set-window-parameter thanks to "#218=,’#897=set-window-parameter" being read 
from dumped.elc.  I suspect 218 was supposed to be just the comma, but the 
special printing of comma forms was still applied but is not compatible with 
the #N# handling, so comma and related symbols should just be excluded from 
that hack.

I’ll test that out, but in the meantime, commenting out the binding in 
loadup.el of print-symbols-as-references should make things work again 
(bootstrapping up until partway through the leim directory).

Ken


reply via email to

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