aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorPaul Eggert2011-01-17 11:24:36 -0800
committerPaul Eggert2011-01-17 11:24:36 -0800
commit15ef8755824eef3336ebb95dbeacb39214f89503 (patch)
tree6fa45b0bd14c8af9f1ae202cb9759985a916fbf6 /src/lisp.h
parent3cbecb8f286aa3309f68d9909317e03df4f597d6 (diff)
parent717c30e0027175fc8bb849728e5c9b4c3e9b2adf (diff)
downloademacs-15ef8755824eef3336ebb95dbeacb39214f89503.tar.gz
emacs-15ef8755824eef3336ebb95dbeacb39214f89503.zip
Merge from mainline.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 1f507123d83..d00dbdc5def 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -327,13 +327,14 @@ typedef EMACS_INT Lisp_Object;
327#define LISP_MAKE_RVALUE(o) (0+(o)) 327#define LISP_MAKE_RVALUE(o) (0+(o))
328#endif /* USE_LISP_UNION_TYPE */ 328#endif /* USE_LISP_UNION_TYPE */
329 329
330/* In the size word of a vector, this bit means the vector has been marked. */ 330/* In the size word of a vector, this bit means the vector has been marked.
331 (Shift -1 left, not 1, to avoid provoking overflow diagnostics.) */
331 332
332#define ARRAY_MARK_FLAG ((EMACS_UINT) 1 << (BITS_PER_EMACS_INT - 1)) 333#define ARRAY_MARK_FLAG ((EMACS_INT) -1 << (BITS_PER_EMACS_INT - 1))
333 334
334/* In the size word of a struct Lisp_Vector, this bit means it's really 335/* In the size word of a struct Lisp_Vector, this bit means it's really
335 some other vector-like object. */ 336 some other vector-like object. */
336#define PSEUDOVECTOR_FLAG ((ARRAY_MARK_FLAG >> 1)) 337#define PSEUDOVECTOR_FLAG ((EMACS_INT) 1 << (BITS_PER_EMACS_INT - 2))
337 338
338/* In a pseudovector, the size field actually contains a word with one 339/* In a pseudovector, the size field actually contains a word with one
339 PSEUDOVECTOR_FLAG bit set, and exactly one of the following bits to 340 PSEUDOVECTOR_FLAG bit set, and exactly one of the following bits to
@@ -437,8 +438,9 @@ enum pvec_type
437 ((((EMACS_INT) (N)) & VALMASK) | ((EMACS_INT) Lisp_Int) << VALBITS) 438 ((((EMACS_INT) (N)) & VALMASK) | ((EMACS_INT) Lisp_Int) << VALBITS)
438#endif 439#endif
439 440
440#define XSET(var, type, ptr) \ 441#define XSET(var, type, ptr) \
441 ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK)) 442 ((var) = ((EMACS_INT) ((EMACS_UINT) (type) << VALBITS) \
443 + ((EMACS_INT) (ptr) & VALMASK)))
442 444
443#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK)) 445#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK))
444 446
@@ -3671,4 +3673,3 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object);
3671 3673
3672 3674
3673#endif /* EMACS_LISP_H */ 3675#endif /* EMACS_LISP_H */
3674