# HG changeset patch # User Stefan Monnier # Date 1056582990 0 # Node ID 7fb427e8d9843b2e8536532e29576152cf65dc33 # Parent 67ba18a34bfd3743d815aa7dbd24df2e4a426e81 (struct interval, struct Lisp_Symbol, struct Lisp_Free) (struct Lisp_Marker, struct Lisp_Intfwd, struct Lisp_Boolfwd) (struct Lisp_Kboard_Objfwd, struct Lisp_Save_Value) (struct Lisp_Buffer_Local_Value, struct Lisp_Overlay) (struct Lisp_Objfwd, struct Lisp_Buffer_Objfwd): Add `gcmarkbit' field. diff -r 67ba18a34bfd -r 7fb427e8d984 src/lisp.h --- a/src/lisp.h Wed Jun 25 18:44:57 2003 +0000 +++ b/src/lisp.h Wed Jun 25 23:16:30 2003 +0000 @@ -511,7 +511,7 @@ /* Construct a Lisp_Object from a value or address. */ -#define XSETINT(a, b) XSET (a, Lisp_Int, b) +#define XSETINT(a, b) (a) = make_number (b) #define XSETCONS(a, b) XSET (a, Lisp_Cons, b) #define XSETVECTOR(a, b) XSET (a, Lisp_Vectorlike, b) #define XSETSTRING(a, b) XSET (a, Lisp_String, b) @@ -591,6 +591,8 @@ } up; unsigned int up_obj : 1; + unsigned gcmarkbit : 1; + /* The remaining components are `properties' of the interval. The first four are duplicates for things which can be on the list, for purposes of speed. */ @@ -879,6 +881,8 @@ struct Lisp_Symbol { + unsigned gcmarkbit : 1; + /* Non-zero means symbol serves as a variable alias. The symbol holding the real value is found in the value slot. */ unsigned indirect_variable : 1; @@ -1088,7 +1092,8 @@ struct Lisp_Free { int type : 16; /* = Lisp_Misc_Free */ - int spacer : 16; + unsigned gcmarkbit : 1; + int spacer : 15; union Lisp_Misc *chain; }; @@ -1096,7 +1101,8 @@ struct Lisp_Marker { int type : 16; /* = Lisp_Misc_Marker */ - int spacer : 15; + unsigned gcmarkbit : 1; + int spacer : 14; /* 1 means normal insertion at the marker's position leaves the marker after the inserted text. */ unsigned int insertion_type : 1; @@ -1123,7 +1129,8 @@ struct Lisp_Intfwd { int type : 16; /* = Lisp_Misc_Intfwd */ - int spacer : 16; + unsigned gcmarkbit : 1; + int spacer : 15; EMACS_INT *intvar; }; @@ -1134,7 +1141,8 @@ struct Lisp_Boolfwd { int type : 16; /* = Lisp_Misc_Boolfwd */ - int spacer : 16; + unsigned gcmarkbit : 1; + int spacer : 15; int *boolvar; }; @@ -1145,7 +1153,8 @@ struct Lisp_Objfwd { int type : 16; /* = Lisp_Misc_Objfwd */ - int spacer : 16; + unsigned gcmarkbit : 1; + int spacer : 15; Lisp_Object *objvar; }; @@ -1154,7 +1163,8 @@ struct Lisp_Buffer_Objfwd { int type : 16; /* = Lisp_Misc_Buffer_Objfwd */ - int spacer : 16; + unsigned gcmarkbit : 1; + int spacer : 15; int offset; }; @@ -1188,7 +1198,8 @@ { int type : 16; /* = Lisp_Misc_Buffer_Local_Value or Lisp_Misc_Some_Buffer_Local_Value */ - int spacer : 13; + unsigned gcmarkbit : 1; + int spacer : 12; /* 1 means this variable is allowed to have frame-local bindings, so check for them when looking for the proper binding. */ @@ -1224,7 +1235,8 @@ struct Lisp_Overlay { int type : 16; /* = Lisp_Misc_Overlay */ - int spacer : 16; + unsigned gcmarkbit : 1; + int spacer : 15; Lisp_Object start, end, plist; }; @@ -1233,7 +1245,8 @@ struct Lisp_Kboard_Objfwd { int type : 16; /* = Lisp_Misc_Kboard_Objfwd */ - int spacer : 16; + unsigned gcmarkbit : 1; + int spacer : 15; int offset; }; @@ -1242,7 +1255,8 @@ struct Lisp_Save_Value { int type : 16; /* = Lisp_Misc_Save_Value */ - int spacer : 16; + unsigned gcmarkbit : 1; + int spacer : 15; void *pointer; int integer; };