Mercurial > hg > xemacs-beta
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) { \