summaryrefslogtreecommitdiff
path: root/src/puresize.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/puresize.h')
-rw-r--r--src/puresize.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/puresize.h b/src/puresize.h
index f07562429d5..96ddcde24a6 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -81,21 +81,35 @@ extern _Noreturn void pure_write_error (Lisp_Object);
extern EMACS_INT pure[];
+/* The puresize_h_* macros are private to this include file. */
+
/* True if PTR is pure. */
+
+#define puresize_h_PURE_P(ptr) \
+ ((uintptr_t) (ptr) - (uintptr_t) pure <= PURESIZE)
+
INLINE bool
PURE_P (void *ptr)
{
- return (uintptr_t) (ptr) - (uintptr_t) pure <= PURESIZE;
+ return puresize_h_PURE_P (ptr);
}
/* Signal an error if OBJ is pure. PTR is OBJ untagged. */
+
+#define puresize_h_CHECK_IMPURE(obj, ptr) \
+ (PURE_P (ptr) ? pure_write_error (obj) : (void) 0)
+
INLINE void
CHECK_IMPURE (Lisp_Object obj, void *ptr)
{
- if (PURE_P (ptr))
- pure_write_error (obj);
+ puresize_h_CHECK_IMPURE (obj, ptr);
}
+#if DEFINE_KEY_OPS_AS_MACROS
+# define PURE_P(ptr) puresize_h_PURE_P (ptr)
+# define CHECK_IMPURE(obj, ptr) puresize_h_CHECK_IMPURE (obj, ptr)
+#endif
+
INLINE_HEADER_END
#endif /* EMACS_PURESIZE_H */