emacs-devel
[Top][All Lists]
Advanced

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

Re: Excessive use of `eassert`


From: Stefan Monnier
Subject: Re: Excessive use of `eassert`
Date: Fri, 19 Jan 2024 08:01:47 -0500
User-agent: Gnus/5.13 (Gnus v5.13)

>> shows that `make_lisp_symbol` is not inlined, so NILP(x) ends up being
>> an actual function call to a function calling another function ....
>> which I think is definitely in the "excessive" camp :-)
>
> I'm not sure I follow.  Can you elaborate?  Are you saying that the
> assertion causes make_lisp_symbol not to be inlined?  And what
> functions are called by NILP?

AFAICT it's worse than just `NILP`, I think, because every `Qnil` (same
thing with all other `Q<something>`, I guess) becomes a call to
`builtin_lisp_symbol` which itself has a call to `make_lisp_symbol`.

>> The patch below seems to address this specific issue, tho I haven't
>> measured its performance impact yet.
> Is this specifically about NILP?  Or are there other situations where
> this assertion slows us down considerably.  I wouldn't want to drop
> this assertion so summarily, if possible.

Why do you find this specific assertion important?  When building other
`Lisp_Object`s (like `make_fixnum`) we don't seem to have any
corresponding assertion that the revere operation (e.g. XFIXNUM) returns
the original value.


        Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]