Subject: bug#71934: comp--spill-lap-function and closure (wad: bug#71934: 31.0.50; edebug--called-interactively-skip vs. new fun objects)

From: Alan Mackenzie <[email-masked]>
Date: Sat, 6 Jul 2024 14:27:02 +0000

Hello, Michael.

On Sat, Jul 06, 2024 at 03:06:24 +0200, Michael Heerdegen wrote:
> Alan Mackenzie <[email-masked]> writes:

> > > > All very clever arguments, no doubt, but in the end it means you
> > > > cannot native compile foo.

> > > To obey the docstring, ....

> > Forget that doc string, just do what is right, expected, and convenient
> > for Emacs users, and adjust the doc string afterwards.

> We are actually trying to do that, but we don't understand the code
> because of the lacking or wrong documentation.

Would that code be comp--spill-lap-function, perhaps?  There are
currently three functions with that name, each for a different type of
argument.

It's apparent that the one that used to work,

    (cl-defmethod comp--spill-lap-function ((form list))                                                                   

, no longer works since function forms were converted to a different
format in March.  It needs modifying to handle the new format.

> Maybe we already had introduced a regression because of that.  And now
> three people try to guess what the code does.  Our time is also
> valuable, Alan.  This documentation is important.

I don't really see where the problem is: comp--spill-lap-function, all
versions, isolates the Lisp source form, passes it to the byte compiler
and receives the intermediate compiled form in the hash table
byte-to-native-lambdas-h.  This intermediate form is then fed to the
native compilation engine.

Or am I not understanding what you're asking?

> Michael.

-- 
Alan Mackenzie (Nuremberg, Germany).