diff options
| author | Paul Eggert | 2012-03-01 18:29:30 -0800 |
|---|---|---|
| committer | Paul Eggert | 2012-03-01 18:29:30 -0800 |
| commit | 9d6b4d53469a9ffd67bd770fabc6fe254e35c21d (patch) | |
| tree | de238c6f707915be9ed1f10235589b4e975a08fb /src/lisp.h | |
| parent | a89654f8f34114db543cb91363e8fded6d73e986 (diff) | |
| parent | eec1549a6b89359b6d970f14dead275e59b7bc6f (diff) | |
| download | emacs-9d6b4d53469a9ffd67bd770fabc6fe254e35c21d.tar.gz emacs-9d6b4d53469a9ffd67bd770fabc6fe254e35c21d.zip | |
Merge from trunk.
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 8c274cddb56..47570ebee74 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 |