diff options
| author | Joakim Verona | 2012-03-06 09:23:09 +0100 |
|---|---|---|
| committer | Joakim Verona | 2012-03-06 09:23:09 +0100 |
| commit | 28485daaf752ff5264ed2f6a32ec15588beaa929 (patch) | |
| tree | a480205aa664c61b1d212833144c0a2d44f7ac01 /src/lisp.h | |
| parent | e8e42079e76ca6255bbd53312994ba8e1b3b0ee8 (diff) | |
| parent | 2e86d8576c668e149cc100f3222bcf19b38019dc (diff) | |
| download | emacs-28485daaf752ff5264ed2f6a32ec15588beaa929.tar.gz emacs-28485daaf752ff5264ed2f6a32ec15588beaa929.zip | |
upstream
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/src/lisp.h b/src/lisp.h index 8ddc7ef143d..f2177ad789d 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -197,22 +197,8 @@ extern int suppress_checking EXTERNALLY_VISIBLE; | |||
| 197 | # if defined DECL_ALIGN | 197 | # if defined DECL_ALIGN |
| 198 | /* On hosts where VALBITS is greater than the pointer width in bits, | 198 | /* On hosts where VALBITS is greater than the pointer width in bits, |
| 199 | USE_LSB_TAG is: | 199 | USE_LSB_TAG is: |
| 200 | 200 | a. unnecessary, because the top bits of an EMACS_INT are unused, and | |
| 201 | a. unnecessary, because the top bits of an EMACS_INT are unused, | 201 | b. slower, because it typically requires extra masking. |
| 202 | |||
| 203 | b. slower, because it typically requires extra masking, and | ||
| 204 | |||
| 205 | c. harmful, because it can create Lisp_Object values that are so scrambled | ||
| 206 | that mark_maybe_object cannot decipher them. mark_maybe_object assumes | ||
| 207 | that EMACS_INT values are contiguous, but a host where EMACS_INT is | ||
| 208 | wider than a pointer might allocate the top half of an EMACS_INT in | ||
| 209 | (say) a 32-bit word on the stack, putting the bottom half in a 32-bit | ||
| 210 | register that is saved elsewhere in a jmp_buf. When this happens, | ||
| 211 | since USE_LSB_TAG is not defined the bottom half alone is a valid | ||
| 212 | pointer that mark_maybe_pointer can follow; but if USE_LSB_TAG were | ||
| 213 | defined, the bottom half would not be a valid pointer and neither | ||
| 214 | mark_maybe_object nor mark_maybe_pointer would follow it. | ||
| 215 | |||
| 216 | So, define USE_LSB_TAG only on hosts where it might be useful. */ | 202 | So, define USE_LSB_TAG only on hosts where it might be useful. */ |
| 217 | # if UINTPTR_MAX >> VALBITS != 0 | 203 | # if UINTPTR_MAX >> VALBITS != 0 |
| 218 | # define USE_LSB_TAG | 204 | # define USE_LSB_TAG |