all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Paul Eggert <eggert@cs.ucla.edu>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts
Date: Fri, 29 Apr 2011 02:06:15 -0700	[thread overview]
Message-ID: <4DBA7F87.5040609@cs.ucla.edu> (raw)
In-Reply-To: <83mxj97889.fsf@gnu.org>

On 04/29/11 01:49, Eli Zaretskii wrote:

> Maybe it's just me, but I'm slightly worried by these names: they
> sound as if they represent pointers,

Yes, that's exactly what they're for.  EMACS_INTPTR is the Emacs
analog of the standard C type intptr_t, which is a integer type that
is wide enough to hold a pointer, i.e., one can convert from void * to
intptr_t and back again without losing information.

The name "intptr" may be a bit confusing to a reader who doesn't
know C99, but once you're used to the standard meaning, any other name
would sound weird.

> you use them as integer types to avoid compiler warnings and casts
> (even though you used pointer types such as intptr_t to define these macros).

No, intptr_t is an integer type; it's not a pointer type.

> How about EMACS_LONG and EMACS_ULONG instead?

That wouldn't be good, because in a typical 32+64-bit host, EMACS_LONG
would be narrower than EMACS_INT.

>> > -  if (data != NULL && data == (void*) XHASH (QCdbus_session_bus))
>> > +  if (data != NULL && data == (void *) XPNTR (QCdbus_session_bus))
> I wonder if we aren't obfuscating the code a bit too much, since XHASH
> says something about its argument, while XPNTR is too general to
> convey any such useful information.  Unless, that is, you are saying
> that the use of XHASH here was bogus to begin with, and all that was
> needed was a pointer.

Yes, that's what it's saying.  void * is supposed to hold only a
pointer: in general it can't hold a pointer plus a tag.  So the
old code wasn't correct.  (It was good enough for the current ports,
but not good enough for a 32+64-bit port.)

>> > Step 2 will change EMACS_INT to be 64 bits on 32+64-bit ports.
>> > That is a bigger deal, and I'll send a later email about it.
> When you do that, please don't hardwire "long long" for the 32+64-bit
> builds.  That type is not standard enough in C90; in particular the
> MSVC compiler we still support for Windows doesn't have it, but it
> does have compatible __int64 and __uint64 types.

Thanks, I hadn't thought of that.  Before I got your email I already
sent out a simple patch
<http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00908.html>
that did not use __int64 (so it continued to use 32-bit int on
Windows).  I will look into extending that patch, so that it also works with
__int64.




  reply	other threads:[~2011-04-29  9:06 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-29  8:08 bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts Paul Eggert
2011-04-29  8:49 ` Eli Zaretskii
2011-04-29  9:06   ` Paul Eggert [this message]
2011-04-29  9:17     ` Eli Zaretskii
2011-04-29 16:04     ` Stefan Monnier
2011-04-29 17:10       ` Eli Zaretskii
2011-04-29 17:32         ` Lars Magne Ingebrigtsen
2011-04-29 17:45           ` Paul Eggert
2011-04-29 18:50         ` David De La Harpe Golden
2011-04-30  5:00           ` Stephen J. Turnbull
2011-04-30  1:37       ` Paul Eggert
2011-05-02 14:46         ` Stefan Monnier
2011-05-02 16:09           ` Paul Eggert
2011-05-02 18:12             ` Stefan Monnier
2011-05-02 19:23               ` Paul Eggert
2011-05-02 19:49                 ` Stefan Monnier
2011-04-30  6:54     ` Paul Eggert
2011-04-30  7:30       ` Eli Zaretskii
2011-04-29  8:56 ` support " Paul Eggert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DBA7F87.5040609@cs.ucla.edu \
    --to=eggert@cs.ucla.edu \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.