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

Re: Issue ALLOW-LOCAL-INLINE (Version 1)



> In the Symbolics implementation, at least, you can achieve most
> of the ALLOW-INLINE effect by doing:
> 
>  (PROCLAIM '(INLINE FOO))
>  (DEFUN FOO (X) (+ X 7))
>  (PROCLAIM '(NOTINLINE FOO))

I'm surprised that implementations actually require this "advance
notice" for INLINE declarations.

I don't really like this proposal because it makes it more likely
that INLINE declarations will do nothing unless the proclamation
is in effect.

Are there implementations that can't do inlining without the advance
notice?

> It used to be in Symbolics implementations that you wrote
> 
>  (DEFSUBST FOO ...)
> 
> to get an inlined definition and if you changed it to DEFUN you would
> get it notinlined. But with the advent of CL, DEFSUBST was changed to
> do
>  (PROGN (PROCLAIM '(INLINE FOO))
>         (DEFUN FOO ...))
> which means that a later change to DEFUN cannot tell that you've changed
> from DEFSUBST to DEFUN and so cannot remove the INLINE-ness. Pity.
> 
> Personally, I think CL should just flush the INLINE proclamation and
> support DEFSUBST instead because it would make this incremental
> development situation easier.

What about locally in-line functions as in E.B.'s substitute for
SYMBOL-MACRO-FLET?