diff options
| author | Ken Raeburn | 2002-07-24 02:07:11 +0000 |
|---|---|---|
| committer | Ken Raeburn | 2002-07-24 02:07:11 +0000 |
| commit | 8febed74d2eee87bd83fb79880e935b54f9f7f1e (patch) | |
| tree | c40789574a340e8a5d3a2a7d647256af1379aef9 /src/lisp.h | |
| parent | 9a654855156bc1df5d5feb2355e3e974701cb3d3 (diff) | |
| download | emacs-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.h | 41 |
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. */ | ||
| 358 | extern 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. */ | ||
| 448 | extern 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 | ||