Mercurial > hg > xemacs-beta
diff src/buffer.c @ 5133:444a448b2f53
Merge branch ben-lisp-object into default branch
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Sun, 07 Mar 2010 06:47:37 -0600 |
parents | a9c41067dd88 |
children | f965e31a35f0 |
line wrap: on
line diff
--- a/src/buffer.c Sun Mar 07 06:43:19 2010 -0600 +++ b/src/buffer.c Sun Mar 07 06:47:37 2010 -0600 @@ -234,11 +234,9 @@ }; #ifdef NEW_GC -DEFINE_LRECORD_IMPLEMENTATION ("buffer-text", buffer_text, - 1, /*dumpable-flag*/ - 0, 0, 0, 0, 0, - buffer_text_description_1, - Lisp_Buffer_Text); +DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT ("buffer-text", buffer_text, + 0, buffer_text_description_1, + Lisp_Buffer_Text); #endif /* NEW_GC */ static const struct sized_memory_description buffer_text_description = { @@ -333,11 +331,10 @@ /* We do not need a finalize method to handle a buffer's children list because all buffers have `kill-buffer' applied to them before they disappear, and the children removal happens then. */ -DEFINE_LRECORD_IMPLEMENTATION ("buffer", buffer, - 0, /*dumpable-flag*/ - mark_buffer, print_buffer, 0, 0, 0, - buffer_description, - struct buffer); +DEFINE_NODUMP_LISP_OBJECT ("buffer", buffer, mark_buffer, + print_buffer, 0, 0, 0, + buffer_description, + struct buffer); DEFUN ("bufferp", Fbufferp, 1, 1, 0, /* Return t if OBJECT is an editor buffer. @@ -603,11 +600,11 @@ static struct buffer * allocate_buffer (void) { - struct buffer *b = ALLOC_LCRECORD_TYPE (struct buffer, &lrecord_buffer); - - COPY_LCRECORD (b, XBUFFER (Vbuffer_defaults)); - - return b; + Lisp_Object obj = ALLOC_NORMAL_LISP_OBJECT (buffer); + + copy_lisp_object (obj, Vbuffer_defaults); + + return XBUFFER (obj); } static Lisp_Object @@ -1779,7 +1776,7 @@ struct overhead_stats *ovstats) { xzero (*stats); - stats->other += LISPOBJ_STORAGE_SIZE (b, sizeof (*b), ovstats); + stats->other += lisp_object_storage_size (wrap_buffer (b), ovstats); stats->text += compute_buffer_text_usage (b, ovstats); stats->markers += compute_buffer_marker_usage (b, ovstats); stats->extents += compute_buffer_extent_usage (b, ovstats); @@ -1910,9 +1907,9 @@ void syms_of_buffer (void) { - INIT_LRECORD_IMPLEMENTATION (buffer); + INIT_LISP_OBJECT (buffer); #ifdef NEW_GC - INIT_LRECORD_IMPLEMENTATION (buffer_text); + INIT_LISP_OBJECT (buffer_text); #endif /* NEW_GC */ DEFSYMBOL (Qbuffer_live_p); @@ -2143,9 +2140,8 @@ do \ { \ struct symbol_value_forward *I_hate_C = \ - alloc_lrecord_type (struct symbol_value_forward, \ - &lrecord_symbol_value_forward); \ - /*mcpro ((Lisp_Object) I_hate_C);*/ \ + XSYMBOL_VALUE_FORWARD (ALLOC_NORMAL_LISP_OBJECT (symbol_value_forward)); \ + /*mcpro ((Lisp_Object) I_hate_C);*/ \ \ I_hate_C->magic.value = &(buffer_local_flags.field_name); \ I_hate_C->magic.type = forward_type; \ @@ -2219,7 +2215,7 @@ static void nuke_all_buffer_slots (struct buffer *b, Lisp_Object zap) { - ZERO_LCRECORD (b); + zero_nonsized_lisp_object (wrap_buffer (b)); b->extent_info = Qnil; b->indirect_children = Qnil; @@ -2234,13 +2230,15 @@ { /* Make sure all markable slots in buffer_defaults are initialized reasonably, so mark_buffer won't choke. */ - struct buffer *defs = ALLOC_LCRECORD_TYPE (struct buffer, &lrecord_buffer); - struct buffer *syms = ALLOC_LCRECORD_TYPE (struct buffer, &lrecord_buffer); + Lisp_Object defobj = ALLOC_NORMAL_LISP_OBJECT (buffer); + struct buffer *defs = XBUFFER (defobj); + Lisp_Object symobj = ALLOC_NORMAL_LISP_OBJECT (buffer); + struct buffer *syms = XBUFFER (symobj); staticpro_nodump (&Vbuffer_defaults); staticpro_nodump (&Vbuffer_local_symbols); - Vbuffer_defaults = wrap_buffer (defs); - Vbuffer_local_symbols = wrap_buffer (syms); + Vbuffer_defaults = defobj; + Vbuffer_local_symbols = symobj; nuke_all_buffer_slots (syms, Qnil); nuke_all_buffer_slots (defs, Qnil); @@ -2297,6 +2295,8 @@ The local flag bits are in the local_var_flags slot of the buffer. */ + set_lheader_implementation ((struct lrecord_header *) + &buffer_local_flags, &lrecord_buffer); nuke_all_buffer_slots (&buffer_local_flags, make_int (-2)); buffer_local_flags.filename = always_local_no_default; buffer_local_flags.directory = always_local_no_default;