[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
- Excessive use of `eassert`, Stefan Monnier, 2024/01/18
- Re: Excessive use of `eassert`, Eli Zaretskii, 2024/01/19
- Re: Excessive use of `eassert`,
Stefan Monnier <=
- Re: Excessive use of `eassert`, Alan Mackenzie, 2024/01/19
- Re: Excessive use of `eassert`, Eli Zaretskii, 2024/01/19
- Re: Excessive use of `eassert`, Paul Eggert, 2024/01/20
- Re: Excessive use of `eassert`, Eli Zaretskii, 2024/01/21
- Re: Excessive use of `eassert`, Paul Eggert, 2024/01/21
- Re: Excessive use of `eassert`, Alan Mackenzie, 2024/01/21