diff src/lrecord.h @ 1676:a72f7bf813c9

[xemacs-hg @ 2003-09-11 09:11:07 by crestani] 2003-09-11 Marcus Crestani <crestani@informatik.uni-tuebingen.de> * alloc.c: Clean up #ifdef USE_KKCC, move stack code to better position. Add lrecord_memory_descriptions table. (KKCC_GC_STACK_FULL): Replace functions with macros. (KKCC_GC_STACK_EMPTY): (kkcc_gc_stack_push): (kkcc_gc_stack_pop): (kkcc_gc_stack_push_lisp_object): (mark_object): Add #ifdef to remove unused code. (garbage_collect_1): Remove some #ifdefs. * dumper.c (pdump): Dump lrecord_memory_descriptions table. * lrecord.h: Add lrecord_memory_descriptions.
author crestani
date Thu, 11 Sep 2003 09:11:08 +0000
parents 34abfb24e891
children 034a2ddf5b6b
line wrap: on
line diff
--- a/src/lrecord.h	Wed Sep 10 21:54:11 2003 +0000
+++ b/src/lrecord.h	Thu Sep 11 09:11:08 2003 +0000
@@ -329,7 +329,12 @@
 } while (0)
 #define SET_LISP_READONLY_RECORD_HEADER(lheader) \
   ((void) ((lheader)->lisp_readonly = 1))
+
+#ifdef USE_KKCC
+#define RECORD_DESCRIPTION(lheader) lrecord_memory_descriptions[(lheader)->type]
+#else /* not USE_KKCC */
 #define RECORD_MARKER(lheader) lrecord_markers[(lheader)->type]
+#endif /* not USE_KKCC */
 
 #define RECORD_DUMPABLE(lheader) (lrecord_implementations_table[(lheader)->type])->dumpable
 
@@ -924,6 +929,15 @@
     getprop, putprop, remprop, plist, size, sizer,			\
     lrecord_type_last_built_in_type, basic_p }
 
+#ifdef USE_KKCC
+extern MODULE_API const struct memory_description *lrecord_memory_descriptions[];
+
+#define INIT_LRECORD_IMPLEMENTATION(type) do {				\
+  lrecord_implementations_table[lrecord_type_##type] = &lrecord_##type;	\
+  lrecord_memory_descriptions[lrecord_type_##type] =			\
+    lrecord_implementations_table[lrecord_type_##type]->description;	\
+} while (0)
+#else /* not USE_KKCC */
 extern MODULE_API Lisp_Object (*lrecord_markers[]) (Lisp_Object);
 
 #define INIT_LRECORD_IMPLEMENTATION(type) do {				\
@@ -931,6 +945,7 @@
   lrecord_markers[lrecord_type_##type] =				\
     lrecord_implementations_table[lrecord_type_##type]->marker;		\
 } while (0)
+#endif /* not USE_KKCC */
 
 #define INIT_EXTERNAL_LRECORD_IMPLEMENTATION(type) do {			\
   lrecord_type_##type = lrecord_type_count++;				\
@@ -941,10 +956,17 @@
 #ifdef HAVE_SHLIB
 /* Allow undefining types in order to support module unloading. */
 
+#ifdef USE_KKCC
+#define UNDEF_LRECORD_IMPLEMENTATION(type) do {				\
+  lrecord_implementations_table[lrecord_type_##type] = NULL;		\
+  lrecord_memory_descriptions[lrecord_type_##type] = NULL;		\
+} while (0)
+#else /* not USE_KKCC */
 #define UNDEF_LRECORD_IMPLEMENTATION(type) do {				\
   lrecord_implementations_table[lrecord_type_##type] = NULL;		\
   lrecord_markers[lrecord_type_##type] = NULL;				\
 } while (0)
+#endif /* not USE_KKCC */
 
 #define UNDEF_EXTERNAL_LRECORD_IMPLEMENTATION(type) do {		\
   if (lrecord_##type.lrecord_type_index == lrecord_type_count - 1) {	\