[Ecls-list] INLINE now works
mm_lists at pulsar-zone.net
Sun Dec 18 19:09:02 UTC 2011
On Sun, 18 Dec 2011 19:25:09 +0100
Juan Jose Garcia-Ripoll <juanjose.garciaripoll at googlemail.com> wrote:
> - INLINE declarations now actually cause the function to be inlined. If
> the function is also proclaimed as INLINE, ECL will store a copy of its
> definition for later use _in other files_. Otherwise INLINE declarations
> remain local to the file being processed.
> I know it is a shamed that this was not done before, but better late than
> never :)
> More or less it works as follows:
> * In declarations, it instructs the compiler to inline FLET/LABELS forms.
> * In DECLAIM, it instructs the compiler to inline further appearances of
> the function, but only in that file.
> * In PROCLAIM, it instructs the compiler to inline all occurrences of the
> function in that file and also in subsequent ones. In this case ECL keeps a
> copy of the definition in the compiled file for further use.
Nice! At times I remember using macrolet instead of flet/labels in
cases where the inlining was worth it performance-wise (and code
readability/complexity maintained), as I had noticed flet/labels
generated actual functions and calls, despite inline declarations.
If I remember SBCL inlines flet/labels by default, yet I'm unsure if
this is always done or only for small functions, I assume the latter.
Is inlining also possible for setf functions?
More information about the ecl-devel