Compiled function annotations.
ben at xemacs.org
Mon Feb 8 22:45:49 EST 2010
On Mon, Feb 8, 2010 at 8:05 AM, Aidan Kehoe <kehoea at parhasard.net> wrote:
> Ar an triú lá de mí Feabhra, scríobh Ben Wing:
> > add more byte-code assertions and better failure output
> > -------------------- ChangeLog entries follow: --------------------
> > src/ChangeLog addition:
> > 2010-02-03 Ben Wing <ben at xemacs.org>
> > [...]
> > Turn on the "compiled-function annotation hack". Implement it
> > properly by hooking into Fdefalias(). Note in the docstring to
> > `defalias' that we do this.
> > [...]
> > @@ -716,12 +718,19 @@
> > DEFUN ("define-function", Fdefine_function, 2, 2, 0, /*
> > Set SYMBOL's function definition to NEWDEF, and return NEWDEF.
> > Associates the function with the current load file, if any.
> > +If NEWDEF is a compiled-function object, stores the function name in
> > +the `annotated' slot of the compiled-function (retrievable using
> > +`compiled-function-annotation').
> > */
> This is noticeably different from what the compiled function annotations
> used to do, and breaks help.el, which says, e.g. that #'eql was loaded from
> `eql'. What’s the upside here? Just that the function name is available in
> the function object? If you have a compiled function object, and an idea of
> what directory it was loaded from, you can grep for the constants vector or
> some sufficiently distinct subset of it in the .elc files, and that’ll tell
> you where it was defined.
I wrote the annotation hack originally and it was always designed to
put the function name in the compiled function object. This way it
makes backtraces more readable -- the print method for compiled
functions automatically prints the annotation. I don't know where
that code in help.el came from. It might have been this: If the
function name couldn't be identified by the very hacky method formerly
used in lread.c, the filename was substituted. Then compiled code was
changed to use `defalias' instead of `fset', and the filename would
always be substituted -- then someone saw this and wrote the code in
I just deleted the code -- load-history does the trick fine.
More information about the XEmacs-Patches