mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-23 13:27:36 +00:00
(XPNTR): Use NO_UNION_TYPE version for union as well,
since it only depends on XUINT.
This commit is contained in:
parent
9a65485515
commit
8febed74d2
1 changed files with 20 additions and 21 deletions
41
src/lisp.h
41
src/lisp.h
|
|
@ -352,26 +352,6 @@ enum pvec_type
|
|||
#define XUINT(a) ((EMACS_UINT) ((a) & VALMASK))
|
||||
#endif
|
||||
|
||||
#ifndef XPNTR
|
||||
#ifdef HAVE_SHM
|
||||
/* In this representation, data is found in two widely separated segments. */
|
||||
extern size_t pure_size;
|
||||
#define XPNTR(a) \
|
||||
(XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
|
||||
#else /* not HAVE_SHM */
|
||||
#ifdef DATA_SEG_BITS
|
||||
/* This case is used for the rt-pc.
|
||||
In the diffs I was given, it checked for ptr = 0
|
||||
and did not adjust it in that case.
|
||||
But I don't think that zero should ever be found
|
||||
in a Lisp object whose data type says it points to something. */
|
||||
#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
|
||||
#else
|
||||
#define XPNTR(a) XUINT (a)
|
||||
#endif
|
||||
#endif /* not HAVE_SHM */
|
||||
#endif /* no XPNTR */
|
||||
|
||||
#ifndef XSET
|
||||
#define XSET(var, type, ptr) \
|
||||
((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK))
|
||||
|
|
@ -437,7 +417,6 @@ extern size_t pure_size;
|
|||
#endif /* EXPLICIT_SIGN_EXTEND */
|
||||
|
||||
#define XUINT(a) ((a).u.val)
|
||||
#define XPNTR(a) ((a).u.val)
|
||||
|
||||
#define XSET(var, vartype, ptr) \
|
||||
(((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype))))
|
||||
|
|
@ -463,6 +442,26 @@ extern Lisp_Object make_number ();
|
|||
|
||||
#endif /* NO_UNION_TYPE */
|
||||
|
||||
#ifndef XPNTR
|
||||
#ifdef HAVE_SHM
|
||||
/* In this representation, data is found in two widely separated segments. */
|
||||
extern size_t pure_size;
|
||||
#define XPNTR(a) \
|
||||
(XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
|
||||
#else /* not HAVE_SHM */
|
||||
#ifdef DATA_SEG_BITS
|
||||
/* This case is used for the rt-pc.
|
||||
In the diffs I was given, it checked for ptr = 0
|
||||
and did not adjust it in that case.
|
||||
But I don't think that zero should ever be found
|
||||
in a Lisp object whose data type says it points to something. */
|
||||
#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
|
||||
#else
|
||||
#define XPNTR(a) XUINT (a)
|
||||
#endif
|
||||
#endif /* not HAVE_SHM */
|
||||
#endif /* no XPNTR */
|
||||
|
||||
/* Largest and smallest representable fixnum values. These are the C
|
||||
values. */
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue