In CLOS, instance remorphing considered useless in practice?

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


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

>
>
> On Wed, Dec 9, 2020 at 3:59 AM Alessio Stalla <alessiostalla at gmail.com>
> 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: <https://mailman.common-lisp.net/pipermail/pro/attachments/20201209/543e1da9/attachment.html>


More information about the pro mailing list