diff options
Diffstat (limited to 'src/puresize.h')
| -rw-r--r-- | src/puresize.h | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/src/puresize.h b/src/puresize.h deleted file mode 100644 index 5516747ac2b..00000000000 --- a/src/puresize.h +++ /dev/null | |||
| @@ -1,115 +0,0 @@ | |||
| 1 | /* How much read-only Lisp storage a dumped Emacs needs. | ||
| 2 | Copyright (C) 1993, 2001-2022 Free Software Foundation, Inc. | ||
| 3 | |||
| 4 | This file is part of GNU Emacs. | ||
| 5 | |||
| 6 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 7 | it under the terms of the GNU General Public License as published by | ||
| 8 | the Free Software Foundation, either version 3 of the License, or (at | ||
| 9 | your option) any later version. | ||
| 10 | |||
| 11 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | GNU General Public License for more details. | ||
| 15 | |||
| 16 | You should have received a copy of the GNU General Public License | ||
| 17 | along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ | ||
| 18 | |||
| 19 | #ifndef EMACS_PURESIZE_H | ||
| 20 | #define EMACS_PURESIZE_H | ||
| 21 | |||
| 22 | #include "lisp.h" | ||
| 23 | |||
| 24 | INLINE_HEADER_BEGIN | ||
| 25 | |||
| 26 | /* Define PURESIZE, the number of bytes of pure Lisp code to leave space for. | ||
| 27 | |||
| 28 | At one point, this was defined in config.h, meaning that changing | ||
| 29 | PURESIZE would make Make recompile all of Emacs. But only a few | ||
| 30 | files actually use PURESIZE, so we split it out to its own .h file. | ||
| 31 | |||
| 32 | Make sure to include this file after config.h, since that tells us | ||
| 33 | whether we are running X windows, which tells us how much pure | ||
| 34 | storage to allocate. */ | ||
| 35 | |||
| 36 | /* First define a measure of the amount of data we have. */ | ||
| 37 | |||
| 38 | /* A system configuration file may set this to request a certain extra | ||
| 39 | amount of storage. This is a lot more update-robust that defining | ||
| 40 | BASE_PURESIZE or even PURESIZE directly. */ | ||
| 41 | #ifndef SYSTEM_PURESIZE_EXTRA | ||
| 42 | #define SYSTEM_PURESIZE_EXTRA 0 | ||
| 43 | #endif | ||
| 44 | |||
| 45 | #ifndef SITELOAD_PURESIZE_EXTRA | ||
| 46 | #define SITELOAD_PURESIZE_EXTRA 0 | ||
| 47 | #endif | ||
| 48 | |||
| 49 | #ifndef BASE_PURESIZE | ||
| 50 | #define BASE_PURESIZE (2000000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA) | ||
| 51 | #endif | ||
| 52 | |||
| 53 | /* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */ | ||
| 54 | #ifndef PURESIZE_RATIO | ||
| 55 | #if EMACS_INT_MAX >> 31 != 0 | ||
| 56 | #if PTRDIFF_MAX >> 31 != 0 | ||
| 57 | #define PURESIZE_RATIO 10 / 6 /* Don't surround with `()'. */ | ||
| 58 | #else | ||
| 59 | #define PURESIZE_RATIO 8 / 6 /* Don't surround with `()'. */ | ||
| 60 | #endif | ||
| 61 | #else | ||
| 62 | #define PURESIZE_RATIO 1 | ||
| 63 | #endif | ||
| 64 | #endif | ||
| 65 | |||
| 66 | #ifdef ENABLE_CHECKING | ||
| 67 | /* ENABLE_CHECKING somehow increases the purespace used, probably because | ||
| 68 | it tends to cause some macro arguments to be evaluated twice. This is | ||
| 69 | a bug, but it's difficult to track it down. */ | ||
| 70 | #define PURESIZE_CHECKING_RATIO 12 / 10 /* Don't surround with `()'. */ | ||
| 71 | #else | ||
| 72 | #define PURESIZE_CHECKING_RATIO 1 | ||
| 73 | #endif | ||
| 74 | |||
| 75 | /* This is the actual size in bytes to allocate. */ | ||
| 76 | #ifndef PURESIZE | ||
| 77 | #define PURESIZE (BASE_PURESIZE * PURESIZE_RATIO * PURESIZE_CHECKING_RATIO) | ||
| 78 | #endif | ||
| 79 | |||
| 80 | extern AVOID pure_write_error (Lisp_Object); | ||
| 81 | |||
| 82 | extern EMACS_INT pure[]; | ||
| 83 | |||
| 84 | /* The puresize_h_* macros are private to this include file. */ | ||
| 85 | |||
| 86 | /* True if PTR is pure. */ | ||
| 87 | |||
| 88 | #define puresize_h_PURE_P(ptr) \ | ||
| 89 | ((uintptr_t) (ptr) - (uintptr_t) pure <= PURESIZE) | ||
| 90 | |||
| 91 | INLINE bool | ||
| 92 | PURE_P (void *ptr) | ||
| 93 | { | ||
| 94 | return puresize_h_PURE_P (ptr); | ||
| 95 | } | ||
| 96 | |||
| 97 | /* Signal an error if OBJ is pure. PTR is OBJ untagged. */ | ||
| 98 | |||
| 99 | #define puresize_h_CHECK_IMPURE(obj, ptr) \ | ||
| 100 | (PURE_P (ptr) ? pure_write_error (obj) : (void) 0) | ||
| 101 | |||
| 102 | INLINE void | ||
| 103 | CHECK_IMPURE (Lisp_Object obj, void *ptr) | ||
| 104 | { | ||
| 105 | puresize_h_CHECK_IMPURE (obj, ptr); | ||
| 106 | } | ||
| 107 | |||
| 108 | #if DEFINE_KEY_OPS_AS_MACROS | ||
| 109 | # define PURE_P(ptr) puresize_h_PURE_P (ptr) | ||
| 110 | # define CHECK_IMPURE(obj, ptr) puresize_h_CHECK_IMPURE (obj, ptr) | ||
| 111 | #endif | ||
| 112 | |||
| 113 | INLINE_HEADER_END | ||
| 114 | |||
| 115 | #endif /* EMACS_PURESIZE_H */ | ||