diff options
| author | Chong Yidong | 2011-01-23 17:38:13 -0500 |
|---|---|---|
| committer | Chong Yidong | 2011-01-23 17:38:13 -0500 |
| commit | 19634648a609af92c97a084cd4d3ad3b10113c1d (patch) | |
| tree | ea0d507cc5917a64af719318bd648438c62ae701 /src | |
| parent | 6de1218f3cbfabdb60446cffc5013962aa434de0 (diff) | |
| download | emacs-19634648a609af92c97a084cd4d3ad3b10113c1d.tar.gz emacs-19634648a609af92c97a084cd4d3ad3b10113c1d.zip | |
* lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases (Bug#6811).
Remove unused HAVE_SHM branch.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/lisp.h | 38 |
2 files changed, 20 insertions, 24 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 874a3bc5bcd..297ea12aee7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,4 +1,10 @@ | |||
| 1 | 2011-01-23 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases. | ||
| 4 | Remove unused HAVE_SHM branch (Bug#6811). | ||
| 5 | |||
| 1 | 2011-01-23 Peter O'Gorman <bug-gnu-emacs@mlists.thewrittenword.com> (tiny change) | 6 | 2011-01-23 Peter O'Gorman <bug-gnu-emacs@mlists.thewrittenword.com> (tiny change) |
| 7 | |||
| 2 | * s/hpux11.h: Set CANNOT_DUMP on IA64 (Bug#6811). | 8 | * s/hpux11.h: Set CANNOT_DUMP on IA64 (Bug#6811). |
| 3 | 9 | ||
| 4 | 2011-01-22 Martin Rudalics <rudalics@gmx.at> | 10 | 2011-01-22 Martin Rudalics <rudalics@gmx.at> |
diff --git a/src/lisp.h b/src/lisp.h index 4f64425e913..34330b0e6c6 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -432,7 +432,13 @@ enum pvec_type | |||
| 432 | #define XSET(var, type, ptr) \ | 432 | #define XSET(var, type, ptr) \ |
| 433 | ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK)) | 433 | ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK)) |
| 434 | 434 | ||
| 435 | #ifdef DATA_SEG_BITS | ||
| 436 | /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers | ||
| 437 | which were stored in a Lisp_Object */ | ||
| 438 | #define XPNTR(a) ((EMACS_UINT) (((a) & VALMASK) | DATA_SEG_BITS)) | ||
| 439 | #else | ||
| 435 | #define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK)) | 440 | #define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK)) |
| 441 | #endif | ||
| 436 | 442 | ||
| 437 | #endif /* not USE_LSB_TAG */ | 443 | #endif /* not USE_LSB_TAG */ |
| 438 | 444 | ||
| @@ -482,6 +488,14 @@ enum pvec_type | |||
| 482 | # define XSET(var, vartype, ptr) \ | 488 | # define XSET(var, vartype, ptr) \ |
| 483 | (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype)))) | 489 | (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype)))) |
| 484 | 490 | ||
| 491 | #ifdef DATA_SEG_BITS | ||
| 492 | /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers | ||
| 493 | which were stored in a Lisp_Object */ | ||
| 494 | #define XPNTR(a) (XUINT (a) | DATA_SEG_BITS) | ||
| 495 | #else | ||
| 496 | #define XPNTR(a) ((EMACS_INT) XUINT (a)) | ||
| 497 | #endif | ||
| 498 | |||
| 485 | #endif /* !USE_LSB_TAG */ | 499 | #endif /* !USE_LSB_TAG */ |
| 486 | 500 | ||
| 487 | #if __GNUC__ >= 2 && defined (__OPTIMIZE__) | 501 | #if __GNUC__ >= 2 && defined (__OPTIMIZE__) |
| @@ -503,30 +517,6 @@ extern Lisp_Object make_number P_ ((EMACS_INT)); | |||
| 503 | 517 | ||
| 504 | #define EQ(x, y) (XHASH (x) == XHASH (y)) | 518 | #define EQ(x, y) (XHASH (x) == XHASH (y)) |
| 505 | 519 | ||
| 506 | #ifndef XPNTR | ||
| 507 | #ifdef HAVE_SHM | ||
| 508 | /* In this representation, data is found in two widely separated segments. */ | ||
| 509 | extern size_t pure_size; | ||
| 510 | #define XPNTR(a) \ | ||
| 511 | (XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS)) | ||
| 512 | #else /* not HAVE_SHM */ | ||
| 513 | #ifdef DATA_SEG_BITS | ||
| 514 | /* This case is used for the rt-pc. | ||
| 515 | In the diffs I was given, it checked for ptr = 0 | ||
| 516 | and did not adjust it in that case. | ||
| 517 | But I don't think that zero should ever be found | ||
| 518 | in a Lisp object whose data type says it points to something. */ | ||
| 519 | #define XPNTR(a) (XUINT (a) | DATA_SEG_BITS) | ||
| 520 | #else | ||
| 521 | /* Some versions of gcc seem to consider the bitfield width when | ||
| 522 | issuing the "cast to pointer from integer of different size" | ||
| 523 | warning, so the cast is here to widen the value back to its natural | ||
| 524 | size. */ | ||
| 525 | #define XPNTR(a) ((EMACS_INT) XUINT (a)) | ||
| 526 | #endif | ||
| 527 | #endif /* not HAVE_SHM */ | ||
| 528 | #endif /* no XPNTR */ | ||
| 529 | |||
| 530 | /* Largest and smallest representable fixnum values. These are the C | 520 | /* Largest and smallest representable fixnum values. These are the C |
| 531 | values. */ | 521 | values. */ |
| 532 | 522 | ||