changeset 28469:f66f2b4d5eb7

* alloc.c (MARK_STRING, UNMARK_STRING, STRING_MARKED_P): Expand non-union-type versions of XMARK and friends here, because XMARK and friends won't work on an integer field if NO_UNION_TYPE is not defined. (make_number): Define as a function if it's not defined as a macro.
author Ken Raeburn <raeburn@raeburn.org>
date Sun, 02 Apr 2000 01:52:58 +0000
parents 7237fe6b37af
children 93996c44b23a
files src/ChangeLog src/alloc.c
diffstat 2 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
Binary file src/ChangeLog has changed
--- a/src/alloc.c	Sat Apr 01 14:42:59 2000 +0000
+++ b/src/alloc.c	Sun Apr 02 01:52:58 2000 +0000
@@ -97,9 +97,9 @@
 /* Mark, unmark, query mark bit of a Lisp string.  S must be a pointer
    to a struct Lisp_String.  */
 
-#define MARK_STRING(S)		XMARK ((S)->size)
-#define UNMARK_STRING(S)	XUNMARK ((S)->size)
-#define STRING_MARKED_P(S)	XMARKBIT ((S)->size)
+#define MARK_STRING(S)		((S)->size |= MARKBIT)
+#define UNMARK_STRING(S)	((S)->size &= ~MARKBIT)
+#define STRING_MARKED_P(S)	((S)->size & MARKBIT)
 
 /* Value is the number of bytes/chars of S, a pointer to a struct
    Lisp_String.  This must be used instead of STRING_BYTES (S) or
@@ -798,7 +798,20 @@
      }							\
   } while (0)
 
-
+
+/* Number support.  If NO_UNION_TYPE isn't in effect, we
+   can't create number objects in macros.  */
+#ifndef make_number
+Lisp_Object
+make_number (n)
+     int n;
+{
+  Lisp_Object obj;
+  obj.s.val = n;
+  obj.s.type = Lisp_Int;
+  return obj;
+}
+#endif
 
 /***********************************************************************
 			  String Allocation