aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorPaul Eggert2012-03-01 18:29:30 -0800
committerPaul Eggert2012-03-01 18:29:30 -0800
commit9d6b4d53469a9ffd67bd770fabc6fe254e35c21d (patch)
treede238c6f707915be9ed1f10235589b4e975a08fb /src/lisp.h
parenta89654f8f34114db543cb91363e8fded6d73e986 (diff)
parenteec1549a6b89359b6d970f14dead275e59b7bc6f (diff)
downloademacs-9d6b4d53469a9ffd67bd770fabc6fe254e35c21d.tar.gz
emacs-9d6b4d53469a9ffd67bd770fabc6fe254e35c21d.zip
Merge from trunk.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h18
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