aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorKen Raeburn2002-07-24 02:07:11 +0000
committerKen Raeburn2002-07-24 02:07:11 +0000
commit8febed74d2eee87bd83fb79880e935b54f9f7f1e (patch)
treec40789574a340e8a5d3a2a7d647256af1379aef9 /src/lisp.h
parent9a654855156bc1df5d5feb2355e3e974701cb3d3 (diff)
downloademacs-8febed74d2eee87bd83fb79880e935b54f9f7f1e.tar.gz
emacs-8febed74d2eee87bd83fb79880e935b54f9f7f1e.zip
(XPNTR): Use NO_UNION_TYPE version for union as well,
since it only depends on XUINT.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/lisp.h b/src/lisp.h
index ab2facaa23c..02ccb09a8eb 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -352,26 +352,6 @@ enum pvec_type
352#define XUINT(a) ((EMACS_UINT) ((a) & VALMASK)) 352#define XUINT(a) ((EMACS_UINT) ((a) & VALMASK))
353#endif 353#endif
354 354
355#ifndef XPNTR
356#ifdef HAVE_SHM
357/* In this representation, data is found in two widely separated segments. */
358extern size_t pure_size;
359#define XPNTR(a) \
360 (XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
361#else /* not HAVE_SHM */
362#ifdef DATA_SEG_BITS
363/* This case is used for the rt-pc.
364 In the diffs I was given, it checked for ptr = 0
365 and did not adjust it in that case.
366 But I don't think that zero should ever be found
367 in a Lisp object whose data type says it points to something. */
368#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
369#else
370#define XPNTR(a) XUINT (a)
371#endif
372#endif /* not HAVE_SHM */
373#endif /* no XPNTR */
374
375#ifndef XSET 355#ifndef XSET
376#define XSET(var, type, ptr) \ 356#define XSET(var, type, ptr) \
377 ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK)) 357 ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK))
@@ -437,7 +417,6 @@ extern size_t pure_size;
437#endif /* EXPLICIT_SIGN_EXTEND */ 417#endif /* EXPLICIT_SIGN_EXTEND */
438 418
439#define XUINT(a) ((a).u.val) 419#define XUINT(a) ((a).u.val)
440#define XPNTR(a) ((a).u.val)
441 420
442#define XSET(var, vartype, ptr) \ 421#define XSET(var, vartype, ptr) \
443 (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype)))) 422 (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype))))
@@ -463,6 +442,26 @@ extern Lisp_Object make_number ();
463 442
464#endif /* NO_UNION_TYPE */ 443#endif /* NO_UNION_TYPE */
465 444
445#ifndef XPNTR
446#ifdef HAVE_SHM
447/* In this representation, data is found in two widely separated segments. */
448extern size_t pure_size;
449#define XPNTR(a) \
450 (XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
451#else /* not HAVE_SHM */
452#ifdef DATA_SEG_BITS
453/* This case is used for the rt-pc.
454 In the diffs I was given, it checked for ptr = 0
455 and did not adjust it in that case.
456 But I don't think that zero should ever be found
457 in a Lisp object whose data type says it points to something. */
458#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
459#else
460#define XPNTR(a) XUINT (a)
461#endif
462#endif /* not HAVE_SHM */
463#endif /* no XPNTR */
464
466/* Largest and smallest representable fixnum values. These are the C 465/* Largest and smallest representable fixnum values. These are the C
467 values. */ 466 values. */
468 467