In CLOS, instance remorphing considered useless in practice?

Alessio Stalla alessiostalla at
Wed Dec 9 15:08:41 UTC 2020

On Wed, 9 Dec 2020 at 10:50, Jean-Claude Beaudoin <
jean.claude.beaudoin at> wrote:

> On Wed, Dec 9, 2020 at 3:59 AM Alessio Stalla <alessiostalla at>
> wrote:
>> About multithreading, *all *kinds of redefinition have an impact. If I
>> redefine a widely-used, low-level function, with hundreds of call sites –
>> will each thread immediately call the new one without the bug, or will some
>> still call the old one? Again, imposing a proper order would require
>> protecting each function call with a lock, which is even worse for
>> performance than protecting each slot access.
> Isn't "inline/not-inline" doing just what is needed in that area?

I'm talking about non inlined functions, for which the implementation may
nevertheless have done type inference or other optimizations that could be
invalidated by a redefinition.

> Still, we consider function redefinition a key feature of Common Lisp. So,
>> redefinition of classes is in accordance with the spirit of the language.
> Redefinition of function is not "in situ". Why should redefinition of
> classes have to be so? I am not advocating against class redefinition!

It is. We can redefine a function without having to track and
recompile/redefine all uses of that function. In the simple case, it's just
updating a pointer. But what if the compiler had performed cross-function
optimizations? Or, what if the compiler *couldn't *perform such
optimizations because they would have gotten in the way of redefinition?
It's not just CLOS to have this issue – it's the whole of Common Lisp.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the pro mailing list