changeset 10387:40988c371fca

(struct Lisp_Free, struct Lisp_Marker, etc.): Make the `type' field just 16 bits, and declare as int. Add explicit spacer field after it. (struct Lisp_Marker): New field insertion_type.
author Richard M. Stallman <rms@gnu.org>
date Wed, 11 Jan 1995 01:17:49 +0000
parents 5acbce95c5fa
children 0ae5926bdee7
files src/lisp.h
diffstat 1 files changed, 22 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/lisp.h	Wed Jan 11 00:22:57 1995 +0000
+++ b/src/lisp.h	Wed Jan 11 01:17:49 1995 +0000
@@ -553,14 +553,19 @@
 /* A miscellaneous object, when it's on the free list.  */
 struct Lisp_Free
   {
-    enum Lisp_Misc_Type type;	/* = Lisp_Misc_Free */
+    int type : 16;	/* = Lisp_Misc_Free */
+    int spacer : 16;
     union Lisp_Misc *chain;
   };
 
 /* In a marker, the markbit of the chain field is used as the gc mark bit */
 struct Lisp_Marker
   {
-    enum Lisp_Misc_Type type;	/* = Lisp_Misc_Marker */
+    int type : 16;	/* = Lisp_Misc_Marker */
+    int spacer : 15;
+    /* 1 means normal insertion at the marker's position
+       leaves the marker after the inserted text.  */
+    int insertion_type : 1;
     struct buffer *buffer;
     Lisp_Object chain;
     int bufpos;
@@ -572,7 +577,8 @@
    specified int variable.  */
 struct Lisp_Intfwd
   {
-    enum Lisp_Misc_Type type;	/* = Lisp_Misc_Intfwd */
+    int type : 16;	/* = Lisp_Misc_Intfwd */
+    int spacer : 16;
     int *intvar;
   };
 
@@ -582,7 +588,8 @@
    nil if it is zero.  */
 struct Lisp_Boolfwd
   {
-    enum Lisp_Misc_Type type;	/* = Lisp_Misc_Boolfwd */
+    int type : 16;	/* = Lisp_Misc_Boolfwd */
+    int spacer : 16;
     int *boolvar;
   };
 
@@ -592,7 +599,8 @@
    specified variable.  */
 struct Lisp_Objfwd
   {
-    enum Lisp_Misc_Type type;	/* = Lisp_Misc_Objfwd */
+    int type : 16;	/* = Lisp_Misc_Objfwd */
+    int spacer : 16;
     Lisp_Object *objvar;
   };
 
@@ -600,7 +608,8 @@
    current buffer.  Value is byte index of slot within buffer.  */
 struct Lisp_Buffer_Objfwd
   {
-    enum Lisp_Misc_Type type;	/* = Lisp_Misc_Buffer_Objfwd */
+    int type : 16;	/* = Lisp_Misc_Buffer_Objfwd */
+    int spacer : 16;
     int offset;
   };
 
@@ -646,8 +655,9 @@
    Only make-local-variable does that.  */
 struct Lisp_Buffer_Local_Value
   {
-    enum Lisp_Misc_Type type;	/* = Lisp_Misc_Buffer_Local_Value
-				   or Lisp_Misc_Some_Buffer_Local_Value */
+    int type : 16; /* = Lisp_Misc_Buffer_Local_Value
+				      or Lisp_Misc_Some_Buffer_Local_Value */
+    int spacer : 16;
     Lisp_Object car, cdr;
   };
 
@@ -656,9 +666,12 @@
    PLIST is the overlay's property list.  */
 struct Lisp_Overlay
   {
-    enum Lisp_Misc_Type type;	/* = Lisp_Misc_Overlay */
+    int type : 16;	/* = Lisp_Misc_Overlay */
+    int spacer : 16;
     Lisp_Object start, end, plist;
   };
+
+
 union Lisp_Misc
   {
     enum Lisp_Misc_Type type;