diff options
| author | Paul Eggert | 2011-01-17 11:24:36 -0800 |
|---|---|---|
| committer | Paul Eggert | 2011-01-17 11:24:36 -0800 |
| commit | 15ef8755824eef3336ebb95dbeacb39214f89503 (patch) | |
| tree | 6fa45b0bd14c8af9f1ae202cb9759985a916fbf6 /src/lisp.h | |
| parent | 3cbecb8f286aa3309f68d9909317e03df4f597d6 (diff) | |
| parent | 717c30e0027175fc8bb849728e5c9b4c3e9b2adf (diff) | |
| download | emacs-15ef8755824eef3336ebb95dbeacb39214f89503.tar.gz emacs-15ef8755824eef3336ebb95dbeacb39214f89503.zip | |
Merge from mainline.
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 13 |
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 | |||