summaryrefslogtreecommitdiff
path: root/src/lisp.h
diff options
context:
space:
mode:
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;
# if defined DECL_ALIGN
/* On hosts where VALBITS is greater than the pointer width in bits,
USE_LSB_TAG is:
-
- a. unnecessary, because the top bits of an EMACS_INT are unused,
-
- b. slower, because it typically requires extra masking, and
-
- c. harmful, because it can create Lisp_Object values that are so scrambled
- that mark_maybe_object cannot decipher them. mark_maybe_object assumes
- that EMACS_INT values are contiguous, but a host where EMACS_INT is
- wider than a pointer might allocate the top half of an EMACS_INT in
- (say) a 32-bit word on the stack, putting the bottom half in a 32-bit
- register that is saved elsewhere in a jmp_buf. When this happens,
- since USE_LSB_TAG is not defined the bottom half alone is a valid
- pointer that mark_maybe_pointer can follow; but if USE_LSB_TAG were
- defined, the bottom half would not be a valid pointer and neither
- mark_maybe_object nor mark_maybe_pointer would follow it.
-
+ a. unnecessary, because the top bits of an EMACS_INT are unused, and
+ b. slower, because it typically requires extra masking.
So, define USE_LSB_TAG only on hosts where it might be useful. */
# if UINTPTR_MAX >> VALBITS != 0
# define USE_LSB_TAG