diff options
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/lisp.h b/src/lisp.h index 3ac2bda94c5..31028e14679 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -1418,13 +1418,25 @@ struct Lisp_Save_Value | |||
| 1418 | } data[4]; | 1418 | } data[4]; |
| 1419 | }; | 1419 | }; |
| 1420 | 1420 | ||
| 1421 | /* Compatibility macro to set and extract saved pointer. */ | 1421 | /* Macro to set and extract Nth saved pointer. Type |
| 1422 | checking is ugly because it's used as an lvalue. */ | ||
| 1422 | 1423 | ||
| 1423 | #define XSAVE_POINTER(obj) XSAVE_VALUE (obj)->data[0].pointer | 1424 | #define XSAVE_POINTER(obj, n) \ |
| 1425 | XSAVE_VALUE (obj)->data[(eassert (XSAVE_VALUE (obj)->type \ | ||
| 1426 | ## n == SAVE_POINTER), n)].pointer | ||
| 1424 | 1427 | ||
| 1425 | /* Likewise for the saved integer. */ | 1428 | /* Likewise for the saved integer. */ |
| 1426 | 1429 | ||
| 1427 | #define XSAVE_INTEGER(obj) XSAVE_VALUE (obj)->data[1].integer | 1430 | #define XSAVE_INTEGER(obj, n) \ |
| 1431 | XSAVE_VALUE (obj)->data[(eassert (XSAVE_VALUE (obj)->type \ | ||
| 1432 | ## n == SAVE_INTEGER), n)].integer | ||
| 1433 | |||
| 1434 | /* Macro to extract Nth saved object. This is never used as | ||
| 1435 | an lvalue, so we can do more convenient type checking. */ | ||
| 1436 | |||
| 1437 | #define XSAVE_OBJECT(obj, n) \ | ||
| 1438 | (eassert (XSAVE_VALUE (obj)->type ## n == SAVE_OBJECT), \ | ||
| 1439 | XSAVE_VALUE (obj)->data[n].object) | ||
| 1428 | 1440 | ||
| 1429 | /* A miscellaneous object, when it's on the free list. */ | 1441 | /* A miscellaneous object, when it's on the free list. */ |
| 1430 | struct Lisp_Free | 1442 | struct Lisp_Free |
| @@ -2926,7 +2938,6 @@ extern void memory_warnings (void *, void (*warnfun) (const char *)); | |||
| 2926 | 2938 | ||
| 2927 | /* Defined in alloc.c. */ | 2939 | /* Defined in alloc.c. */ |
| 2928 | extern void check_pure_size (void); | 2940 | extern void check_pure_size (void); |
| 2929 | extern Lisp_Object allocate_misc (enum Lisp_Misc_Type); | ||
| 2930 | extern void free_misc (Lisp_Object); | 2941 | extern void free_misc (Lisp_Object); |
| 2931 | extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); | 2942 | extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); |
| 2932 | extern void malloc_warning (const char *); | 2943 | extern void malloc_warning (const char *); |
| @@ -3012,8 +3023,8 @@ extern bool abort_on_gc; | |||
| 3012 | extern Lisp_Object make_float (double); | 3023 | extern Lisp_Object make_float (double); |
| 3013 | extern void display_malloc_warning (void); | 3024 | extern void display_malloc_warning (void); |
| 3014 | extern ptrdiff_t inhibit_garbage_collection (void); | 3025 | extern ptrdiff_t inhibit_garbage_collection (void); |
| 3026 | extern Lisp_Object format_save_value (const char *, ...); | ||
| 3015 | extern Lisp_Object make_save_value (void *, ptrdiff_t); | 3027 | extern Lisp_Object make_save_value (void *, ptrdiff_t); |
| 3016 | extern void free_save_value (Lisp_Object); | ||
| 3017 | extern Lisp_Object build_overlay (Lisp_Object, Lisp_Object, Lisp_Object); | 3028 | extern Lisp_Object build_overlay (Lisp_Object, Lisp_Object, Lisp_Object); |
| 3018 | extern void free_marker (Lisp_Object); | 3029 | extern void free_marker (Lisp_Object); |
| 3019 | extern void free_cons (struct Lisp_Cons *); | 3030 | extern void free_cons (struct Lisp_Cons *); |