diff src/alloc.c @ 420:41dbb7a9d5f2 r21-2-18

Import from CVS: tag r21-2-18
author cvs
date Mon, 13 Aug 2007 11:24:09 +0200
parents da8ed4261e83
children 11054d720c21
line wrap: on
line diff
--- a/src/alloc.c	Mon Aug 13 11:23:14 2007 +0200
+++ b/src/alloc.c	Mon Aug 13 11:24:09 2007 +0200
@@ -58,8 +58,6 @@
 #include "sysfile.h"
 #include "window.h"
 
-#include <stddef.h>
-
 #ifdef DOUG_LEA_MALLOC
 #include <malloc.h>
 #endif
@@ -967,6 +965,11 @@
   return 0;
 }
 
+static const struct lrecord_description cons_description[] = {
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Cons, car), 2 },
+  { XD_END }
+};
+
 DEFINE_BASIC_LRECORD_IMPLEMENTATION ("cons", cons,
 				     mark_cons, print_cons, 0,
 				     cons_equal,
@@ -976,6 +979,7 @@
 				      * handle conses.
 				      */
 				     0,
+				     cons_description,
 				     struct Lisp_Cons);
 
 DEFUN ("cons", Fcons, 2, 2, 0, /*
@@ -1166,6 +1170,11 @@
   return 1;
 }
 
+static const struct lrecord_description vector_description[] = {
+  { XD_LONG,        offsetof(struct Lisp_Vector, size) },
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Vector, contents), XD_INDIRECT(0) }
+};
+
 DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION("vector", vector,
 				       mark_vector, print_vector, 0,
 				       vector_equal,
@@ -1175,6 +1184,7 @@
 				        * knows how to handle vectors.
 				        */
 				       0,
+				       vector_description,
 				       size_vector, Lisp_Vector);
 
 /* #### should allocate `small' vectors from a frob-block */
@@ -1743,6 +1753,12 @@
 	  !memcmp (XSTRING_DATA (obj1), XSTRING_DATA (obj2), len));
 }
 
+static const struct lrecord_description string_description[] = {
+  { XD_STRING_DATA, offsetof(Lisp_String, data) },
+  { XD_LISP_OBJECT, offsetof(Lisp_String, plist), 1 },
+  { XD_END }
+};
+
 DEFINE_BASIC_LRECORD_IMPLEMENTATION ("string", string,
 				     mark_string, print_string,
 				     /*
@@ -1756,6 +1772,7 @@
 				      * SWEEP_FIXED_TYPE_BLOCK().
 				      */
 				     0, string_equal, 0,
+				     string_description,
 				     struct Lisp_String);
 
 /* String blocks contain this many useful bytes. */
@@ -2243,7 +2260,7 @@
 
 DEFINE_LRECORD_IMPLEMENTATION ("lcrecord-list", lcrecord_list,
 			       mark_lcrecord_list, internal_object_printer,
-			       0, 0, 0, struct lcrecord_list);
+			       0, 0, 0, 0, struct lcrecord_list);
 Lisp_Object
 make_lcrecord_list (size_t size,
 		    CONST struct lrecord_implementation *implementation)