diff options
author | Karl Heuer <kwzh@gnu.org> | 1995-12-21 17:13:56 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1995-12-21 17:13:56 +0000 |
commit | f75e1ee572b46f6baf1f0c15aea277cd797efeba (patch) | |
tree | ca039fc01d0a7b647b2279b8feb0105cf731ae2c /src | |
parent | 798b64bbf67df09a69e91f8184974bf7cca3af83 (diff) | |
download | emacs-f75e1ee572b46f6baf1f0c15aea277cd797efeba.tar.gz |
(PURE_P): New macro (three definitions).
(CHECK_IMPURE): Use PURE_P.
Diffstat (limited to 'src')
-rw-r--r-- | src/puresize.h | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/src/puresize.h b/src/puresize.h index b14543146d1..7498c9cda93 100644 --- a/src/puresize.h +++ b/src/puresize.h @@ -62,31 +62,38 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #define PURESIZE (BASE_PURESIZE * PURESIZE_RATIO) #endif -#ifdef VIRT_ADDR_VARIES +/* Signal an error if OBJ is pure. */ +#define CHECK_IMPURE(obj) \ + { if (PURE_P (obj)) \ + pure_write_error (); } + +/* Define PURE_P. */ +#ifdef VIRT_ADDR_VARIES /* For machines like APOLLO where text and data can go anywhere in virtual memory. */ -#define CHECK_IMPURE(obj) \ - { extern EMACS_INT pure[]; \ - if ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) \ - && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure) \ - pure_write_error (); } + +extern EMACS_INT pure[]; + +#define PURE_P(obj) \ + ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) \ + && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure) #else /* not VIRT_ADDR_VARIES */ #ifdef PNTR_COMPARISON_TYPE +/* When PNTR_COMPARISON_TYPE is not the default (unsigned int). */ -/* when PNTR_COMPARISON_TYPE is not the default (unsigned int) */ -#define CHECK_IMPURE(obj) \ - { extern char my_edata[]; \ - if ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) my_edata) \ - pure_write_error (); } +extern char my_edata[]; + +#define PURE_P(obj) \ + ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) my_edata) #else /* not VIRT_ADDRESS_VARIES, not PNTR_COMPARISON_TYPE */ -#define CHECK_IMPURE(obj) \ - { extern char my_edata[]; \ - if (XPNTR (obj) < (unsigned int) my_edata) \ - pure_write_error (); } +extern char my_edata[]; + +#define PURE_P(obj) \ + (XPNTR (obj) < (unsigned int) my_edata) #endif /* PNTR_COMPARISON_TYPE */ #endif /* VIRT_ADDRESS_VARIES */ |