Subject: bug#41242: Port feature/native-comp to Windows

From: Andrea Corallo <[email-masked]>
Date: Thu, 14 May 2020 18:13:35 +0000

Nicolas Bértolo <[email-masked]> writes:

>> 1- eln files do not retain the orginal function bytecode.
>
> That should be easy to change.

Sure but we don't want to do that because there's no reason to bloat the
eln.

>> in any point of the code you can get the symbol-function of a defined
>    function and leak it everywhere.
>
> This is why I said the GC should do it. It should be able to find all
> references.

Yes but I can't *remove* objects that are referenced niether swap them.
See below.

>> We can't technically "swap" functions definitions, the best we do is just
>> redefine them that is set a certain symbol-function (what late load does).
>
> When the GC finds a Lisp_Object that points to a subr we want to unload,
> it should replace it with one that points to its bytecode equivalent version.

No it cannot, if an object has been tested to say satisfy a predicate
you cannot change it for another one.  It would break tons of code and
make the system totally un-debuggable.

>> Even worst the function you want to remove could be active in the stack!
>
> You are right. I hadn't considered this. It can still be done, but would need to
> wait until the function finishes.

Yes, but when are all functions you want to get rid deactivated?

Here we are really complexifying a problem that is not.  IMO renaming
and having a list to do the clean-up are sufficient tools to solve it.

-- 
[email-masked]