emacs-devel
[Top][All Lists]
Advanced

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

Re: pdumper on Solaris 10


From: Pip Cet
Subject: Re: pdumper on Solaris 10
Date: Sun, 08 Dec 2024 13:52:09 +0000

"Eli Zaretskii" <eliz@gnu.org> writes:

>> Date: Sun, 08 Dec 2024 12:17:05 +0000
>> Cc: ali_gnu2@emvision.com, emacs-devel@gnu.org
>> From:  Pip Cet via "Emacs development discussions." <emacs-devel@gnu.org>
>>
>> "Po Lu" <luangruo@yahoo.com> writes:
>>
>> But while we're talking about rare and unusual systems, !USE_LSB builds
>> are currently broken except for the WIDE_EMACS_INT case, because the
>> stack scanning code makes no attempt to remove MSB tags.
>
> Which builds except WIDE_EMACS_INT need to use !USE_LSB?

The only platforms that "need" to use !USE_LSB are those that cannot
guarantee 8-byte alignment for static objects, which is why I asked
about those.  If those exist, we should have received bug reports
indicating that !WIDE_EMACS_INT builds don't work on such platforms.

In particular, WIDE_EMACS_INT shouldn't imply !USE_LSB.  That it
currently does is a very questionable optimization at best (fixnum
manipulation may be very slightly faster with !USE_LSB, but pointer
manipulation will be slower and requires extra registers, which is an
issue on i386).

For example, NILP() would only need to look at a single 32-bit word for
the WIDE_EMACS_INT + USE_LSB configuration. I strongly suspect that
effect alone would make WIDE_EMACS_INT + USE_LSB faster than
WIDE_EMACS_INT + !USE_LSB (of course, the relevant optimization would
have to be made first).

(Of course, WIDE_EMACS_INT is almost always a bad deal, anyway.  As far
as I can tell, the justification for its continued existence is that
some C code assumes buffer positions are fixnums (and, because we expose
fixnum-ness to Lisp, some broken Lisp code might do that, too). If we
had implemented fixnums to be transparent, we could simply remove
WIDE_EMACS_INT, but that mistake has been made...)

Pip




reply via email to

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