Mercurial > hg > xemacs-beta
changeset 5120:d1247f3cc363 ben-lisp-object
latest work on lisp-object workspace;
more changes eliminating LCRECORD in place of LISP_OBJECT;
now compiles and runs.
line wrap: on
line diff
--- a/modules/ldap/eldap.c Sat Dec 26 21:22:48 2009 -0600 +++ b/modules/ldap/eldap.c Mon Dec 28 01:15:52 2009 -0600 @@ -876,7 +876,7 @@ unload_eldap (void) { /* Remove defined types */ - UNDEF_LRECORD_IMPLEMENTATION (ldap); + UNDEF_LISP_OBJECT (ldap); /* Remove staticpro'ing of symbols */ unstaticpro_nodump (&Qeldap);
--- a/modules/ldap/eldap.h Sat Dec 26 21:22:48 2009 -0600 +++ b/modules/ldap/eldap.h Mon Dec 28 01:15:52 2009 -0600 @@ -38,7 +38,7 @@ struct Lisp_LDAP { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* The LDAP connection handle used by the LDAP API */ LDAP *ld; /* Name of the host we connected to */
--- a/modules/postgresql/postgresql.c Sat Dec 26 21:22:48 2009 -0600 +++ b/modules/postgresql/postgresql.c Mon Dec 28 01:15:52 2009 -0600 @@ -90,8 +90,10 @@ interface to lcrecord handling has changed with 21.2, so unfortunately we will need a few snippets of backwards compatibility code. */ -#if (EMACS_MAJOR_VERSION == 21) && (EMACS_MINOR_VERSION < 2) +#if (EMACS_MAJOR_VERSION == 21) && (EMACS_MINOR_VERSION <= 1) #define RUNNING_XEMACS_21_1 1 +#elif (EMACS_MAJOR_VERSION == 21) && (EMACS_MINOR_VERSION <= 4) +#define RUNNING_XEMACS_21_4 1 #endif /* #define POSTGRES_LO_IMPORT_IS_VOID 1 */ @@ -240,7 +242,7 @@ #ifdef RUNNING_XEMACS_21_1 Lisp_PGconn *pgconn = ALLOC_LCRECORD_TYPE (Lisp_PGconn, lrecord_pgconn); -#elif RUNNING_XEMACS_21_4 +#elif defined (RUNNING_XEMACS_21_4) Lisp_PGconn *pgconn = ALLOC_LCRECORD_TYPE (Lisp_PGconn, &lrecord_pgconn); #else @@ -374,7 +376,7 @@ #ifdef RUNNING_XEMACS_21_1 Lisp_PGresult *pgresult = ALLOC_LCRECORD_TYPE (Lisp_PGresult, lrecord_pgresult); -#elif RUNNING_XEMACS_21_4 +#elif defined (RUNNING_XEMACS_21_4) Lisp_PGresult *pgresult = ALLOC_LCRECORD_TYPE (Lisp_PGresult, &lrecord_pgresult); #else @@ -1889,8 +1891,8 @@ { #ifndef RUNNING_XEMACS_21_1 /* Remove defined types */ - UNDEF_LRECORD_IMPLEMENTATION (pgconn); - UNDEF_LRECORD_IMPLEMENTATION (pgresult); + UNDEF_LISP_OBJECT (pgconn); + UNDEF_LISP_OBJECT (pgresult); #endif /* Remove staticpro'ing of symbols */
--- a/modules/postgresql/postgresql.h Sat Dec 26 21:22:48 2009 -0600 +++ b/modules/postgresql/postgresql.h Mon Dec 28 01:15:52 2009 -0600 @@ -28,7 +28,7 @@ */ struct Lisp_PGconn { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; PGconn *pgconn; }; typedef struct Lisp_PGconn Lisp_PGconn; @@ -48,7 +48,7 @@ */ struct Lisp_PGresult { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; PGresult *pgresult; }; typedef struct Lisp_PGresult Lisp_PGresult;
--- a/src/alloc.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/alloc.c Mon Dec 28 01:15:52 2009 -0600 @@ -1200,14 +1200,14 @@ #endif /* NEW_GC */ #ifdef NEW_GC -#define ALLOCATE_FIXED_TYPE_AND_SET_IMPL(type, lisp_type, var, lrec_ptr) \ +#define ALLOCATE_FIXED_TYPE_AND_SET_IMPL(type, lisp_type, var, lrec_ptr)\ do { \ - (var) = alloc_lrecord_type (lisp_type, lrec_ptr); \ + (var) = (lisp_type *) XPNTR (ALLOC_LISP_OBJECT (type)); \ } while (0) #define NOSEEUM_ALLOCATE_FIXED_TYPE_AND_SET_IMPL(type, lisp_type, var, \ lrec_ptr) \ do { \ - (var) = noseeum_alloc_lrecord_type (lisp_type, lrec_ptr); \ + (var) = (lisp_type *) XPNTR (noseeum_alloc_lrecord (lrec_ptr)); \ } while (0) #else /* not NEW_GC */ #define ALLOCATE_FIXED_TYPE_AND_SET_IMPL(type, lisp_type, var, lrec_ptr) \ @@ -2538,7 +2538,7 @@ assert (length >= 0 && fullsize > 0); #ifdef NEW_GC - s = alloc_lrecord_type (Lisp_String, &lrecord_string); + s = XSTRING (ALLOC_LISP_OBJECT (string)); #else /* not NEW_GC */ /* Allocate the string header */ ALLOCATE_FIXED_TYPE (string, Lisp_String, s); @@ -2946,7 +2946,7 @@ #endif #ifdef NEW_GC - s = alloc_lrecord_type (Lisp_String, &lrecord_string); + s = XSTRING (ALLOC_LISP_OBJECT (string)); mcpro (wrap_pointer_1 (s)); /* otherwise nocopy_strings get collected and static data is tried to be freed. */ @@ -2961,10 +2961,7 @@ s->plist = Qnil; #ifdef NEW_GC set_lispstringp_indirect (s); - STRING_DATA_OBJECT (s) = - wrap_string_indirect_data - (alloc_lrecord_type (Lisp_String_Indirect_Data, - &lrecord_string_indirect_data)); + STRING_DATA_OBJECT (s) = ALLOC_LISP_OBJECT (string_indirect_data); XSTRING_INDIRECT_DATA_DATA (STRING_DATA_OBJECT (s)) = (Ibyte *) contents; XSTRING_INDIRECT_DATA_SIZE (STRING_DATA_OBJECT (s)) = length; #else /* not NEW_GC */
--- a/src/buffer.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/buffer.c Mon Dec 28 01:15:52 2009 -0600 @@ -601,7 +601,7 @@ Lisp_Object obj = ALLOC_LISP_OBJECT (buffer); struct buffer *b = XBUFFER (obj); - COPY_LCRECORD (b, XBUFFER (Vbuffer_defaults)); + COPY_LISP_OBJECT (b, XBUFFER (Vbuffer_defaults)); return b; } @@ -1775,7 +1775,7 @@ struct overhead_stats *ovstats) { xzero (*stats); - stats->other += LISPOBJ_STORAGE_SIZE (b, sizeof (*b), ovstats); + stats->other += LISP_OBJECT_STORAGE_SIZE (b, sizeof (*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); @@ -2139,8 +2139,7 @@ do \ { \ struct symbol_value_forward *I_hate_C = \ - alloc_lrecord_type (struct symbol_value_forward, \ - &lrecord_symbol_value_forward); \ + XSYMBOL_VALUE_FORWARD (ALLOC_LISP_OBJECT (symbol_value_forward)); \ /*mcpro ((Lisp_Object) I_hate_C);*/ \ \ I_hate_C->magic.value = &(buffer_local_flags.field_name); \ @@ -2215,7 +2214,7 @@ static void nuke_all_buffer_slots (struct buffer *b, Lisp_Object zap) { - ZERO_LCRECORD (b); + ZERO_LISP_OBJECT (b); b->extent_info = Qnil; b->indirect_children = Qnil;
--- a/src/buffer.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/buffer.h Mon Dec 28 01:15:52 2009 -0600 @@ -80,7 +80,7 @@ struct buffer_text { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Ibyte *beg; /* Actual address of buffer contents. */ Bytebpos gpt; /* Index of gap in buffer. */ @@ -157,7 +157,7 @@ struct buffer { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* This structure holds the coordinates of the buffer contents in ordinary buffers. In indirect buffers, this is not used. */
--- a/src/bytecode.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/bytecode.h Mon Dec 28 01:15:52 2009 -0600 @@ -34,7 +34,7 @@ #ifdef NEW_GC struct compiled_function_args { - struct lrecord_header header; + LISP_OBJECT_HEADER header; long size; Lisp_Object args[1]; }; @@ -72,7 +72,7 @@ struct Lisp_Compiled_Function { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; unsigned short stack_depth; unsigned short specpdl_depth; struct
--- a/src/casetab.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/casetab.h Mon Dec 28 01:15:52 2009 -0600 @@ -25,7 +25,7 @@ struct Lisp_Case_Table { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object downcase_table; Lisp_Object upcase_table; Lisp_Object case_canon_table;
--- a/src/charset.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/charset.h Mon Dec 28 01:15:52 2009 -0600 @@ -183,7 +183,7 @@ struct Lisp_Charset { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; int id; Lisp_Object name;
--- a/src/chartab.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/chartab.c Mon Dec 28 01:15:52 2009 -0600 @@ -474,7 +474,7 @@ if (!EQ (ct->level1[i], Qnull_pointer) && CHAR_TABLE_ENTRYP (ct->level1[i]) && !OBJECT_DUMPED_P (ct->level1[1])) - FREE_LCRECORD (ct->level1[i]); + FREE_LISP_OBJECT (ct->level1[i]); ct->level1[i] = value; } #endif /* MULE */ @@ -1068,7 +1068,7 @@ int lb = XCHARSET_LEADING_BYTE (range->charset) - MIN_LEADING_BYTE; if (CHAR_TABLE_ENTRYP (ct->level1[lb]) && !OBJECT_DUMPED_P (ct->level1[lb])) - FREE_LCRECORD (ct->level1[lb]); + FREE_LISP_OBJECT (ct->level1[lb]); ct->level1[lb] = val; } break;
--- a/src/chartab.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/chartab.h Mon Dec 28 01:15:52 2009 -0600 @@ -42,7 +42,7 @@ struct Lisp_Char_Table_Entry { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* In the interests of simplicity, we just use a fixed 96-entry table. If we felt like being smarter, we could make this @@ -80,7 +80,7 @@ struct Lisp_Char_Table { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object ascii[NUM_ASCII_CHARS]; Lisp_Object default_;
--- a/src/console-gtk-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console-gtk-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -50,7 +50,7 @@ struct gtk_device { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ /* Gtk application info. */ GtkWidget *gtk_app_shell; @@ -144,7 +144,7 @@ struct gtk_frame { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ /* The widget of this frame. */
--- a/src/console-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -409,7 +409,7 @@ struct console { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* Description of this console's methods. */ struct console_methods *conmeths;
--- a/src/console-msw-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console-msw-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -57,7 +57,7 @@ struct Lisp_Devmode { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* Pointer to the DEVMODE structure */ DEVMODEW *devmode; @@ -82,7 +82,7 @@ struct mswindows_device { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Lisp_Object fontlist; /* List of (STRING . FIXED-P), device fonts */ HDC hcdc; /* Compatible DC */ @@ -110,7 +110,7 @@ struct msprinter_device { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ HDC hdc, hcdc; /* Printer and the comp. DCs */ HANDLE hprinter; @@ -168,7 +168,7 @@ struct mswindows_frame { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ /* win32 window handle */ @@ -318,7 +318,7 @@ struct mswindows_dialog_id { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object frame; Lisp_Object callbacks;
--- a/src/console-stream-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console-stream-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -35,7 +35,7 @@ struct stream_console { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ FILE *in; FILE *out;
--- a/src/console-stream.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console-stream.c Mon Dec 28 01:15:52 2009 -0600 @@ -71,8 +71,8 @@ #ifdef NEW_GC if (CONSOLE_STREAM_DATA (con) == NULL) - CONSOLE_STREAM_DATA (con) = alloc_lrecord_type (struct stream_console, - &lrecord_stream_console); + CONSOLE_STREAM_DATA (con) = + XSTREAM_CONSOLE (ALLOC_LISP_OBJECT (stream_console)); #else /* not NEW_GC */ if (CONSOLE_STREAM_DATA (con) == NULL) CONSOLE_STREAM_DATA (con) = xnew_and_zero (struct stream_console);
--- a/src/console-tty-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console-tty-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -40,7 +40,7 @@ struct tty_console { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ int infd, outfd; Lisp_Object instream, outstream; @@ -256,7 +256,7 @@ struct tty_device { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ #ifdef HAVE_TERMIOS speed_t ospeed; /* Output speed (from sg_ospeed) */
--- a/src/console-tty.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console-tty.c Mon Dec 28 01:15:52 2009 -0600 @@ -75,8 +75,7 @@ { /* zero out all slots except the lisp ones ... */ #ifdef NEW_GC - CONSOLE_TTY_DATA (con) = alloc_lrecord_type (struct tty_console, - &lrecord_tty_console); + CONSOLE_TTY_DATA (con) = XTTY_CONSOLE (ALLOC_LISP_OBJECT (tty_console)); #else /* not NEW_GC */ CONSOLE_TTY_DATA (con) = xnew_and_zero (struct tty_console); #endif /* not NEW_GC */
--- a/src/console-x-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console-x-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -45,7 +45,7 @@ struct x_device { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ /* The X connection of this device. */ Display *display; @@ -243,7 +243,7 @@ struct x_frame { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ /* The widget of this frame.
--- a/src/console.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/console.c Mon Dec 28 01:15:52 2009 -0600 @@ -204,7 +204,7 @@ struct console *con = XCONSOLE (console); struct gcpro gcpro1; - COPY_LCRECORD (con, XCONSOLE (Vconsole_defaults)); + COPY_LISP_OBJECT (con, XCONSOLE (Vconsole_defaults)); GCPRO1 (console); @@ -668,7 +668,7 @@ static void nuke_all_console_slots (struct console *con, Lisp_Object zap) { - ZERO_LCRECORD (con); + ZERO_LISP_OBJECT (con); #define MARKED_SLOT(x) con->x = zap; #include "conslots.h" @@ -1327,8 +1327,7 @@ #define DEFVAR_CONSOLE_LOCAL_1(lname, field_name, forward_type, magic_fun) \ do { \ struct symbol_value_forward *I_hate_C = \ - alloc_lrecord_type (struct symbol_value_forward, \ - &lrecord_symbol_value_forward); \ + XSYMBOL_VALUE_FORWARD (ALLOC_LISP_OBJECT (symbol_value_forward)); \ /*mcpro ((Lisp_Object) I_hate_C);*/ \ \ I_hate_C->magic.value = &(console_local_flags.field_name); \
--- a/src/database.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/database.c Mon Dec 28 01:15:52 2009 -0600 @@ -147,7 +147,7 @@ struct Lisp_Database { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object fname; int mode; int access_;
--- a/src/device-gtk.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/device-gtk.c Mon Dec 28 01:15:52 2009 -0600 @@ -115,7 +115,7 @@ allocate_gtk_device_struct (struct device *d) { #ifdef NEW_GC - d->device_data = alloc_lrecord_type (struct gtk_device, &lrecord_gtk_device); + d->device_data = XGTK_DEVICE (ALLOC_LISP_OBJECT (gtk_device)); #else /* not NEW_GC */ d->device_data = xnew_and_zero (struct gtk_device); #endif /* not NEW_GC */
--- a/src/device-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/device-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -71,7 +71,7 @@ struct device { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* Methods for this device's console. This can also be retrieved through device->console, but it's faster this way. */
--- a/src/device-msw.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/device-msw.c Mon Dec 28 01:15:52 2009 -0600 @@ -162,8 +162,7 @@ init_one_device (d); #ifdef NEW_GC - d->device_data = alloc_lrecord_type (struct mswindows_device, - &lrecord_mswindows_device); + d->device_data = XMSWINDOWS_DEVICE (ALLOC_LISP_OBJECT (mswindows_device)); #else /* not NEW_GC */ d->device_data = xnew_and_zero (struct mswindows_device); #endif /* not NEW_GC */ @@ -519,8 +518,7 @@ Extbyte *printer_name; #ifdef NEW_GC - d->device_data = alloc_lrecord_type (struct msprinter_device, - &lrecord_msprinter_device); + d->device_data = XMSPRINTER_DEVICE (ALLOC_LISP_OBJECT (msprinter_device)); #else /* not NEW_GC */ d->device_data = xnew_and_zero (struct msprinter_device); #endif /* not NEW_GC */
--- a/src/device-tty.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/device-tty.c Mon Dec 28 01:15:52 2009 -0600 @@ -58,7 +58,7 @@ allocate_tty_device_struct (struct device *d) { #ifdef NEW_GC - d->device_data = alloc_lrecord_type (struct tty_device, &lrecord_tty_device); + d->device_data = XTTY_DEVICE (ALLOC_LISP_OBJECT (tty_device)); #else /* not NEW_GC */ d->device_data = xnew_and_zero (struct tty_device); #endif /* not NEW_GC */
--- a/src/device-x.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/device-x.c Mon Dec 28 01:15:52 2009 -0600 @@ -228,7 +228,7 @@ allocate_x_device_struct (struct device *d) { #ifdef NEW_GC - d->device_data = alloc_lrecord_type (struct x_device, &lrecord_x_device); + d->device_data = XX_DEVICE (ALLOC_LISP_OBJECT (x_device)); #else /* not NEW_GC */ d->device_data = xnew_and_zero (struct x_device); #endif /* not NEW_GC */
--- a/src/device.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/device.c Mon Dec 28 01:15:52 2009 -0600 @@ -201,7 +201,7 @@ static void nuke_all_device_slots (struct device *d, Lisp_Object zap) { - ZERO_LCRECORD (d); + ZERO_LISP_OBJECT (d); #define MARKED_SLOT(x) d->x = zap; #include "devslots.h"
--- a/src/dynarr.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/dynarr.c Mon Dec 28 01:15:52 2009 -0600 @@ -172,7 +172,8 @@ const struct lrecord_implementation *dynarr_imp, const struct lrecord_implementation *imp) { - Dynarr *d = (Dynarr *) XPNTR (ALLOC_LISP_OBJECT (dynarr)); + Dynarr *d = (Dynarr *) XPNTR (alloc_sized_lrecord (sizeof (Dynarr), + dynarr_imp)); d->elsize = elsize; d->lisp_imp = imp;
--- a/src/elhash.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/elhash.c Mon Dec 28 01:15:52 2009 -0600 @@ -96,7 +96,7 @@ struct Lisp_Hash_Table { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Elemcount size; Elemcount count; Elemcount rehash_count; @@ -1026,7 +1026,7 @@ const Lisp_Hash_Table *ht_old = xhash_table (hash_table); Lisp_Object obj = ALLOC_LISP_OBJECT (hash_table); Lisp_Hash_Table *ht = XHASH_TABLE (obj); - COPY_LCRECORD (ht, ht_old); + COPY_LISP_OBJECT (ht, ht_old); /* We leave room for one never-occupied sentinel htentry at the end. */ ht->hentries = allocate_hash_table_entries (ht_old->size + 1);
--- a/src/elhash.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/elhash.h Mon Dec 28 01:15:52 2009 -0600 @@ -36,7 +36,7 @@ typedef struct htentry { #ifdef NEW_GC - struct lrecord_header lheader; + LISP_OBJECT_HEADER lheader; #endif /* NEW_GC */ Lisp_Object key; Lisp_Object value;
--- a/src/event-stream.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/event-stream.c Mon Dec 28 01:15:52 2009 -0600 @@ -455,7 +455,7 @@ xfree (builder->echo_buf, Ibyte *); builder->echo_buf = NULL; } - FREE_LCRECORD (wrap_command_builder (builder)); + FREE_LISP_OBJECT (wrap_command_builder (builder)); } static void @@ -1163,7 +1163,7 @@ *timeout_list = noseeum_cons (op, *timeout_list); } else - FREE_LCRECORD (op); + FREE_LISP_OBJECT (op); UNGCPRO; return id; @@ -1200,7 +1200,7 @@ signal_remove_async_interval_timeout (timeout->interval_id); else event_stream_remove_timeout (timeout->interval_id); - FREE_LCRECORD (op); + FREE_LISP_OBJECT (op); } }
--- a/src/events.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/events.h Mon Dec 28 01:15:52 2009 -0600 @@ -123,7 +123,7 @@ struct Lisp_Key_Data { #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ /* What keysym this is; a character or a symbol. */ Lisp_Object keysym; @@ -219,7 +219,7 @@ struct Lisp_Button_Data { #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ /* What button went down or up. */ int button; @@ -271,7 +271,7 @@ struct Lisp_Motion_Data { #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ /* Where it was after it moved (in pixels). */ int x, y; @@ -313,7 +313,7 @@ struct Lisp_Process_Data { #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ /* the XEmacs "process" object in question */ Lisp_Object process; @@ -352,7 +352,7 @@ object The object passed to that function. */ #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ int interval_id; int id_number; @@ -411,7 +411,7 @@ object Argument of function. */ #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ Lisp_Object function; Lisp_Object object; @@ -464,7 +464,7 @@ values for other types of misc_user_events. */ #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ Lisp_Object function; Lisp_Object object; @@ -541,7 +541,7 @@ */ #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ void (*internal_function) (Lisp_Object); Lisp_Object object; @@ -597,7 +597,7 @@ */ #ifdef EVENT_DATA_AS_OBJECTS - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; #endif /* EVENT_DATA_AS_OBJECTS */ union { @@ -660,7 +660,7 @@ struct Lisp_Timeout { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; int id; /* Id we use to identify the timeout over its lifetime */ int interval_id; /* Id for this particular interval; this may be different each time the timeout is @@ -690,7 +690,7 @@ - Likewise for events chained in the command builder. - Otherwise it's Qnil. */ - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; Lisp_Object next; emacs_event_type event_type; @@ -1137,7 +1137,7 @@ */ struct command_builder { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object console; /* back pointer to the console this command builder is for */ #if 0
--- a/src/extents-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/extents-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -27,7 +27,7 @@ struct extent { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; Memxpos start; Memxpos end; @@ -103,7 +103,7 @@ typedef struct extent_auxiliary extent_auxiliary; struct extent_auxiliary { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object begin_glyph; Lisp_Object end_glyph; @@ -129,7 +129,7 @@ struct extent_info { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; struct extent_list *extents; struct stack_of_extents *soe;
--- a/src/extents.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/extents.c Mon Dec 28 01:15:52 2009 -0600 @@ -243,7 +243,7 @@ typedef struct gap_array_marker { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ int pos; struct gap_array_marker *next; @@ -273,7 +273,7 @@ typedef struct gap_array { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Elemcount gap; Elemcount gapsize; @@ -319,7 +319,7 @@ typedef struct extent_list_marker { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Gap_Array_Marker *m; int endp; @@ -329,7 +329,7 @@ typedef struct extent_list { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Gap_Array *start; Gap_Array *end; @@ -394,7 +394,7 @@ typedef struct stack_of_extents { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Extent_List *extents; Memxpos pos; /* Position of stack of extents. EXTENTS is the list of @@ -691,7 +691,7 @@ assert (pos >= 0 && pos <= ga->numels); #ifdef NEW_GC - m = alloc_lrecord_type (Gap_Array_Marker, &lrecord_gap_array_marker); + m = XGAP_ARRAY_MARKER (ALLOC_LISP_OBJECT (gap_array_marker)); #else /* not NEW_GC */ if (gap_array_marker_freelist) { @@ -757,7 +757,8 @@ make_gap_array (Elemcount elsize) { #ifdef NEW_GC - Gap_Array *ga = alloc_lrecord_type (Gap_Array, &lrecord_gap_array); + Gap_Array *ga = XGAP_ARRAY (ALLOC_SIZED_LISP_OBJECT (sizeof (Gap_Array), + gap_array)); #else /* not NEW_GC */ Gap_Array *ga = xnew_and_zero (Gap_Array); #endif /* not NEW_GC */ @@ -928,7 +929,7 @@ Extent_List_Marker *m; #ifdef NEW_GC - m = alloc_lrecord_type (Extent_List_Marker, &lrecord_extent_list_marker); + m = XEXTENT_LIST_MARKER (ALLOC_LISP_OBJECT (extent_list_marker)); #else /* not NEW_GC */ if (extent_list_marker_freelist) { @@ -977,7 +978,7 @@ allocate_extent_list (void) { #ifdef NEW_GC - Extent_List *el = alloc_lrecord_type (Extent_List, &lrecord_extent_list); + Extent_List *el = XEXTENT_LIST (ALLOC_LISP_OBJECT (extent_list)); #else /* not NEW_GC */ Extent_List *el = xnew (Extent_List); #endif /* not NEW_GC */ @@ -1042,7 +1043,7 @@ Lisp_Object obj = ALLOC_LISP_OBJECT (extent_auxiliary); struct extent_auxiliary *data = XEXTENT_AUXILIARY (obj); - COPY_LCRECORD (data, &extent_auxiliary_defaults); + COPY_LISP_OBJECT (data, &extent_auxiliary_defaults); ext->plist = Fcons (obj, ext->plist); ext->flags.has_aux = 1; } @@ -1786,8 +1787,8 @@ allocate_soe (void) { #ifdef NEW_GC - struct stack_of_extents *soe = - alloc_lrecord_type (struct stack_of_extents, &lrecord_stack_of_extents); + struct stack_of_extents *soe = + XSTACK_OF_EXTENTS (ALLOC_LISP_OBJECT (stack_of_extents)); #else /* not NEW_GC */ struct stack_of_extents *soe = xnew_and_zero (struct stack_of_extents); #endif /* not NEW_GC */ @@ -4042,7 +4043,7 @@ Lisp_Object ea = ALLOC_LISP_OBJECT (extent_auxiliary); struct extent_auxiliary *data = XEXTENT_AUXILIARY (ea); - COPY_LCRECORD (data, XEXTENT_AUXILIARY (XCAR (original->plist))); + COPY_LISP_OBJECT (data, XEXTENT_AUXILIARY (XCAR (original->plist))); XCAR (e->plist) = ea; }
--- a/src/faces.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/faces.h Mon Dec 28 01:15:52 2009 -0600 @@ -34,7 +34,7 @@ struct Lisp_Face { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object name; Lisp_Object doc_string; @@ -119,7 +119,7 @@ struct face_cachel { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ /* There are two kinds of cachels; those created from a single face and those created by merging more than one face. In the former
--- a/src/file-coding.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/file-coding.c Mon Dec 28 01:15:52 2009 -0600 @@ -1459,7 +1459,7 @@ { Lisp_Coding_System *to = XCODING_SYSTEM (new_coding_system); Lisp_Coding_System *from = XCODING_SYSTEM (old_coding_system); - COPY_SIZED_LCRECORD (to, from, sizeof_coding_system (from)); + COPY_SIZED_LISP_OBJECT (to, from, sizeof_coding_system (from)); to->name = new_name; } return new_coding_system;
--- a/src/file-coding.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/file-coding.h Mon Dec 28 01:15:52 2009 -0600 @@ -188,7 +188,7 @@ struct Lisp_Coding_System { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; struct coding_system_methods *methods; #define CODING_SYSTEM_SLOT_DECLARATION
--- a/src/font-mgr.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/font-mgr.h Mon Dec 28 01:15:52 2009 -0600 @@ -54,7 +54,7 @@ struct fc_pattern { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; FcPattern *fcpatPtr; }; @@ -73,7 +73,7 @@ struct fc_config { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; FcConfig *fccfgPtr; };
--- a/src/frame-gtk.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/frame-gtk.c Mon Dec 28 01:15:52 2009 -0600 @@ -973,7 +973,7 @@ /* zero out all slots. */ #ifdef NEW_GC - f->frame_data = alloc_lrecord_type (struct gtk_frame, &lrecord_gtk_frame); + f->frame_data = XGTK_FRAME (ALLOC_LISP_OBJECT (gtk_frame)); #else /* not NEW_GC */ f->frame_data = xnew_and_zero (struct gtk_frame); #endif /* not NEW_GC */
--- a/src/frame-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/frame-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -41,7 +41,7 @@ struct frame { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* Methods for this frame's console. This can also be retrieved through frame->device->console, but it's faster this way. */
--- a/src/frame-msw.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/frame-msw.c Mon Dec 28 01:15:52 2009 -0600 @@ -172,8 +172,7 @@ CHECK_INT (height); #ifdef NEW_GC - f->frame_data = alloc_lrecord_type (struct mswindows_frame, - &lrecord_mswindows_frame); + f->frame_data = XMSWINDOWS_FRAME (ALLOC_LISP_OBJECT (mswindows_frame)); #else /* not NEW_GC */ f->frame_data = xnew_and_zero (struct mswindows_frame); #endif /* not NEW_GC */
--- a/src/frame-x.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/frame-x.c Mon Dec 28 01:15:52 2009 -0600 @@ -2042,7 +2042,7 @@ { /* zero out all slots. */ #ifdef NEW_GC - f->frame_data = alloc_lrecord_type (struct x_frame, &lrecord_x_frame); + f->frame_data = XX_FRAME (ALLOC_LISP_OBJECT (x_frame)); #else /* not NEW_GC */ f->frame_data = xnew_and_zero (struct x_frame); #endif /* not NEW_GC */
--- a/src/frame.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/frame.c Mon Dec 28 01:15:52 2009 -0600 @@ -288,7 +288,7 @@ static void nuke_all_frame_slots (struct frame *f) { - ZERO_LCRECORD (f); + ZERO_LISP_OBJECT (f); #define MARKED_SLOT(x) f->x = Qnil; #include "frameslots.h"
--- a/src/glyphs.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/glyphs.c Mon Dec 28 01:15:52 2009 -0600 @@ -1991,7 +1991,7 @@ device-specific method to copy the window-system subobject. */ new_ = allocate_image_instance (XIMAGE_INSTANCE_DOMAIN (image_instance), Qnil, Qnil); - COPY_LCRECORD (XIMAGE_INSTANCE (new_), XIMAGE_INSTANCE (image_instance)); + COPY_LISP_OBJECT (XIMAGE_INSTANCE (new_), XIMAGE_INSTANCE (image_instance)); /* note that if this method returns non-zero, this method MUST copy any window-system resources, so that when one image instance is freed, the other one is not hosed. */ @@ -4612,7 +4612,7 @@ struct expose_ignore *ei; #ifdef NEW_GC - ei = alloc_lrecord_type (struct expose_ignore, &lrecord_expose_ignore); + ei = XEXPOSE_IGNORE (ALLOC_LISP_OBJECT (expose_ignore)); #else /* not NEW_GC */ ei = Blocktype_alloc (the_expose_ignore_blocktype); #endif /* not NEW_GC */
--- a/src/glyphs.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/glyphs.h Mon Dec 28 01:15:52 2009 -0600 @@ -594,7 +594,7 @@ struct Lisp_Image_Instance { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object domain; /* The domain in which we were cached. */ Lisp_Object device; /* The device of the domain. Recorded since the domain may get deleted @@ -946,7 +946,7 @@ struct Lisp_Glyph { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; enum glyph_type type; @@ -1068,7 +1068,7 @@ struct glyph_cachel { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Lisp_Object glyph; @@ -1196,7 +1196,7 @@ struct expose_ignore { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ int x, y; int width, height;
--- a/src/gui.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/gui.h Mon Dec 28 01:15:52 2009 -0600 @@ -44,7 +44,7 @@ menu item or submenu properties */ struct Lisp_Gui_Item { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object name; /* String */ Lisp_Object callback; /* Symbol or form */ Lisp_Object callback_ex; /* Form taking context arguments */
--- a/src/inline.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/inline.c Mon Dec 28 01:15:52 2009 -0600 @@ -99,19 +99,26 @@ #include "database.h" #endif +#include "console-stream-impl.h" + #ifdef HAVE_X_WINDOWS -#include "glyphs-x.h" +#include "console-x-impl.h" #ifdef USE_XFT #include "font-mgr.h" #endif #endif #ifdef HAVE_MS_WINDOWS -#include "console-msw.h" +#include "console-msw-impl.h" +#endif + +#ifdef HAVE_TTY +#include "console-tty-impl.h" +#include "objects-tty-impl.h" #endif #ifdef HAVE_GTK -#include "console-gtk.h" +#include "console-gtk-impl.h" #include "ui-gtk.h" #endif
--- a/src/keymap.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/keymap.c Mon Dec 28 01:15:52 2009 -0600 @@ -148,7 +148,7 @@ struct Lisp_Keymap { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object parents; /* Keymaps to be searched after this one. An ordered list */ Lisp_Object prompt; /* Qnil or a string to print in the minibuffer
--- a/src/lisp.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/lisp.h Mon Dec 28 01:15:52 2009 -0600 @@ -1818,7 +1818,7 @@ struct Lisp_Cons { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; Lisp_Object car_, cdr_; }; typedef struct Lisp_Cons Lisp_Cons; @@ -1835,7 +1835,7 @@ }; #endif -DECLARE_MODULE_API_LRECORD (cons, Lisp_Cons); +DECLARE_MODULE_API_LISP_OBJECT (cons, Lisp_Cons); #define XCONS(x) XRECORD (x, cons, Lisp_Cons) #define wrap_cons(p) wrap_record (p, cons) #define CONSP(x) RECORDP (x, cons) @@ -2373,13 +2373,13 @@ #ifdef NEW_GC struct Lisp_String_Direct_Data { - struct lrecord_header header; + LISP_OBJECT_HEADER header; Bytecount size; Ibyte data[1]; }; typedef struct Lisp_String_Direct_Data Lisp_String_Direct_Data; -DECLARE_MODULE_API_LRECORD (string_direct_data, Lisp_String_Direct_Data); +DECLARE_MODULE_API_LISP_OBJECT (string_direct_data, Lisp_String_Direct_Data); #define XSTRING_DIRECT_DATA(x) \ XRECORD (x, string_direct_data, Lisp_String_Direct_Data) #define wrap_string_direct_data(p) wrap_record (p, string_direct_data) @@ -2393,13 +2393,13 @@ struct Lisp_String_Indirect_Data { - struct lrecord_header header; + LISP_OBJECT_HEADER header; Bytecount size; Ibyte *data; }; typedef struct Lisp_String_Indirect_Data Lisp_String_Indirect_Data; -DECLARE_MODULE_API_LRECORD (string_indirect_data, Lisp_String_Indirect_Data); +DECLARE_MODULE_API_LISP_OBJECT (string_indirect_data, Lisp_String_Indirect_Data); #define XSTRING_INDIRECT_DATA(x) \ XRECORD (x, string_indirect_data, Lisp_String_Indirect_Data) #define wrap_string_indirect_data(p) wrap_record (p, string_indirect_data) @@ -2474,7 +2474,7 @@ #define MAX_STRING_ASCII_BEGIN ((1 << 21) - 1) #endif /* not NEW_GC */ -DECLARE_MODULE_API_LRECORD (string, Lisp_String); +DECLARE_MODULE_API_LISP_OBJECT (string, Lisp_String); #define XSTRING(x) XRECORD (x, string, Lisp_String) #define wrap_string(p) wrap_record (p, string) #define STRINGP(x) RECORDP (x, string) @@ -2547,7 +2547,7 @@ struct Lisp_Vector { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; long size; Lisp_Object contents[1]; }; @@ -2584,7 +2584,7 @@ struct Lisp_Bit_Vector { - struct LCRECORD_HEADER lheader; + LISP_OBJECT_HEADER lheader; Elemcount size; unsigned long bits[1]; }; @@ -2638,7 +2638,7 @@ /* For when we want to include a bit vector in another structure, and we know it's of a fixed size. */ #define DECLARE_INLINE_LISP_BIT_VECTOR(numbits) struct { \ - struct LCRECORD_HEADER lheader; \ + LISP_OBJECT_HEADER lheader; \ Elemcount size; \ unsigned long bits[BIT_VECTOR_LONG_STORAGE(numbits)]; \ } @@ -2648,7 +2648,7 @@ typedef struct Lisp_Symbol Lisp_Symbol; struct Lisp_Symbol { - struct lrecord_header lheader; + LISP_OBJECT_HEADER lheader; /* next symbol in this obarray bucket */ Lisp_Symbol *next; Lisp_Object name; @@ -2664,7 +2664,7 @@ XSTRING_LENGTH (symbol_name (XSYMBOL (sym)))))) #define KEYWORDP(obj) (SYMBOLP (obj) && SYMBOL_IS_KEYWORD (obj)) -DECLARE_MODULE_API_LRECORD (symbol, Lisp_Symbol); +DECLARE_MODULE_API_LISP_OBJECT (symbol, Lisp_Symbol); #define XSYMBOL(x) XRECORD (x, symbol, Lisp_Symbol) #define wrap_symbol(p) wrap_record (p, symbol) #define SYMBOLP(x) RECORDP (x, symbol) @@ -2692,7 +2692,7 @@ struct Lisp_Subr { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; short min_args; short max_args; /* #### We should make these const Ascbyte * or const Ibyte *, not const @@ -2722,7 +2722,7 @@ typedef struct Lisp_Marker Lisp_Marker; struct Lisp_Marker { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; Lisp_Marker *next; Lisp_Marker *prev; struct buffer *buffer; @@ -2730,7 +2730,7 @@ char insertion_type; }; -DECLARE_MODULE_API_LRECORD (marker, Lisp_Marker); +DECLARE_MODULE_API_LISP_OBJECT (marker, Lisp_Marker); #define XMARKER(x) XRECORD (x, marker, Lisp_Marker) #define wrap_marker(p) wrap_record (p, marker) #define MARKERP(x) RECORDP (x, marker) @@ -2976,7 +2976,7 @@ struct Lisp_Float { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; union { double d; struct Lisp_Float *unused_next_; } data; }; typedef struct Lisp_Float Lisp_Float; @@ -3064,7 +3064,7 @@ struct weak_box { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object value; Lisp_Object next_weak_box; /* don't mark through this! */ @@ -3086,7 +3086,7 @@ struct ephemeron { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object key; @@ -3145,7 +3145,7 @@ struct weak_list { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object list; /* don't mark through this! */ enum weak_list_type type; Lisp_Object next_weak; /* don't mark through this! */
--- a/src/lrecord.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/lrecord.h Mon Dec 28 01:15:52 2009 -0600 @@ -26,36 +26,16 @@ #ifndef INCLUDED_lrecord_h_ #define INCLUDED_lrecord_h_ -#ifdef NEW_GC -/* The "lrecord" type of Lisp object is used for all object types - other than a few simple ones (like char and int). This allows many - types to be implemented but only a few bits required in a Lisp - object for type information. (The tradeoff is that each object has - its type marked in it, thereby increasing its size.) All lrecords - begin with a `struct lrecord_header', which identifies the lisp - object type, by providing an index into a table of `struct - lrecord_implementation', which describes the behavior of the lisp - object. It also contains some other data bits. +/* The "lrecord" type of Lisp object is used for all object types other + than a few simple ones (like char and int). This allows many types to be + implemented but only a few bits required in a Lisp object for type + information. (The tradeoff is that each object has its type marked in + it, thereby increasing its size.) All lrecords begin with a `struct + lrecord_header', which identifies the lisp object type, by providing an + index into a table of `struct lrecord_implementation', which describes + the behavior of the lisp object. It also contains some other data bits. - Creating a new lrecord type is fairly easy; just follow the - lead of some existing type (e.g. hash tables). Note that you - do not need to supply all the methods (see below); reasonable - defaults are provided for many of them. Alternatively, if you're - just looking for a way of encapsulating data (which possibly - could contain Lisp_Objects in it), you may well be able to use - the opaque type. -*/ -#else /* not NEW_GC */ -/* The "lrecord" type of Lisp object is used for all object types - other than a few simple ones. This allows many types to be - implemented but only a few bits required in a Lisp object for type - information. (The tradeoff is that each object has its type marked - in it, thereby increasing its size.) All lrecords begin with a - `struct lrecord_header', which identifies the lisp object type, by - providing an index into a table of `struct lrecord_implementation', - which describes the behavior of the lisp object. It also contains - some other data bits. - +#ifndef NEW_GC Lrecords are of two types: straight lrecords, and lcrecords. Straight lrecords are used for those types of objects that have their own allocation routines (typically allocated out of 2K chunks @@ -70,38 +50,45 @@ Lcrecords have a `struct old_lcrecord_header' at the top, which contains a `struct lrecord_header' and a `next' pointer, and are allocated using old_alloc_lcrecord_type() or its variants. +#endif - Creating a new lcrecord type is fairly easy; just follow the + Creating a new Lisp object type is fairly easy; just follow the lead of some existing type (e.g. hash tables). Note that you do not need to supply all the methods (see below); reasonable defaults are provided for many of them. Alternatively, if you're just looking for a way of encapsulating data (which possibly could contain Lisp_Objects in it), you may well be able to use - the opaque type. --ben + the opaque type. + + The "public API's" meant for use by regular Lisp objects are macros + in capital letters, involving the word "LISP_OBJECT". Underlyingly, + the functions and structures use "lrecord" or "lcrecord", but most + code shouldn't have to worry about this. */ -#endif /* not NEW_GC */ #ifdef NEW_GC #define ALLOC_LISP_OBJECT(type) alloc_lrecord (&lrecord_##type) #define ALLOC_SIZED_LISP_OBJECT(size, type) \ alloc_sized_lrecord (size, &lrecord_##type) -#define COPY_SIZED_LCRECORD copy_sized_lrecord -#define COPY_LCRECORD copy_lrecord -#define LISPOBJ_STORAGE_SIZE(ptr, size, stats) \ +#define COPY_SIZED_LISP_OBJECT copy_sized_lrecord +#define COPY_LISP_OBJECT copy_lrecord +#define LISP_OBJECT_STORAGE_SIZE(ptr, size, stats) \ mc_alloced_storage_size (size, stats) -#define ZERO_LCRECORD zero_lrecord -#define LCRECORD_HEADER lrecord_header -#define FREE_LCRECORD free_lrecord +#define ZERO_LISP_OBJECT zero_lrecord +#define LISP_OBJECT_HEADER struct lrecord_header +#define FROB_BLOCK_LISP_OBJECT_HEADER struct lrecord_header +#define FREE_LISP_OBJECT free_lrecord #else /* not NEW_GC */ #define ALLOC_LISP_OBJECT(type) alloc_automanaged_lcrecord (&lrecord_##type) #define ALLOC_SIZED_LISP_OBJECT(size, type) \ old_alloc_sized_lcrecord (size, &lrecord_##type) -#define COPY_SIZED_LCRECORD old_copy_sized_lcrecord -#define COPY_LCRECORD old_copy_lcrecord -#define LISPOBJ_STORAGE_SIZE malloced_storage_size -#define ZERO_LCRECORD old_zero_lcrecord -#define LCRECORD_HEADER old_lcrecord_header -#define FREE_LCRECORD old_free_lcrecord +#define COPY_SIZED_LISP_OBJECT old_copy_sized_lcrecord +#define COPY_LISP_OBJECT old_copy_lcrecord +#define LISP_OBJECT_STORAGE_SIZE malloced_storage_size +#define ZERO_LISP_OBJECT old_zero_lcrecord +#define LISP_OBJECT_HEADER struct old_lcrecord_header +#define FROB_BLOCK_LISP_OBJECT_HEADER struct lrecord_header +#define FREE_LISP_OBJECT old_free_lcrecord #endif /* not NEW_GC */ BEGIN_C_DECLS @@ -730,7 +717,7 @@ struct Lisp_Hash_Table { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Elemcount size; Elemcount count; Elemcount rehash_count; @@ -795,7 +782,7 @@ struct Lisp_Specifier { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; struct specifier_methods *methods; ... @@ -1155,6 +1142,16 @@ objects need special handling in alloc.c. This does not apply to NEW_GC, because it does this automatically. + DEFINE_*_INTERNAL_LISP_OBJECT is for "internal" objects that should + never be visible on the Lisp level. This is a shorthand for the + most common type of internal objects, which have no equal or hash + method (since they generally won't appear in hash tables), no + finalizer and internal_object_printer() as their print method + (which prints that the object is internal and shouldn't be visible + externally). For internal objects needing a finalizer, equal or + hash method, use the normal DEFINE_*_LISP_OBJECT mechanism for + defining these objects. + DEFINE_*_WITH_PROPS is for objects which support the unified property interface using `get', `put', `remprop' and `object-plist'. @@ -1357,9 +1354,9 @@ 1. Declare the struct for your object in a header file somewhere. Remember that it must begin with - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; - 2. Put the "standard junk" (DECLARE_RECORD()/XFOO/etc.) below the + 2. Put the "standard junk" (DECLARE_LISP_OBJECT()/XFOO/etc.) below the struct definition -- see below. 3. Add this header file to inline.c. @@ -1372,8 +1369,13 @@ describing the purpose of the descriptions; and comments elsewhere in this file describing the exact syntax of the description structures. - 6. Define your object with DEFINE_LISP_OBJECT() or some - variant. + 6. Define your object with DEFINE_*_LISP_OBJECT() or some + variant. At the minimum, you need to decide whether your object can + be dumped. Objects that are created as part of the loadup process and + need to be persistent across dumping should be created dumpable. + Nondumpable objects are generally those associated with display, + particularly those containing a pointer to an external library object + (e.g. a window-system window). 7. Include the header file in the .c file where you defined the object. @@ -1391,7 +1393,7 @@ struct toolbar_button { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object next; Lisp_Object frame; @@ -1506,9 +1508,9 @@ /* Note: Object types defined in external dynamically-loaded modules (not -part of the XEmacs main source code) should use DECLARE_MODULE_LRECORD -and DEFINE_MODULE_LISP_OBJECT rather than DECLARE_LISP_OBJECT -and DEFINE_LISP_OBJECT. The MODULE versions declare and +part of the XEmacs main source code) should use DECLARE_*_MODULE_LISP_OBJECT +and DEFINE_*_MODULE_LISP_OBJECT rather than DECLARE_*_LISP_OBJECT +and DEFINE_*_LISP_OBJECT. The MODULE versions declare and allocate an enumerator for the type being defined. */ @@ -1516,7 +1518,7 @@ #ifdef ERROR_CHECK_TYPES -# define DECLARE_LISP_OBJECT(c_name, structtype) \ +# define DECLARE_LISP_OBJECT(c_name, structtype) \ extern const struct lrecord_implementation lrecord_##c_name; \ DECLARE_INLINE_HEADER ( \ structtype * \ @@ -1528,7 +1530,7 @@ } \ extern Lisp_Object Q##c_name##p -# define DECLARE_MODULE_API_LRECORD(c_name, structtype) \ +# define DECLARE_MODULE_API_LISP_OBJECT(c_name, structtype) \ extern MODULE_API const struct lrecord_implementation lrecord_##c_name; \ DECLARE_INLINE_HEADER ( \ structtype * \ @@ -1540,7 +1542,7 @@ } \ extern MODULE_API Lisp_Object Q##c_name##p -# define DECLARE_MODULE_LRECORD(c_name, structtype) \ +# define DECLARE_MODULE_LISP_OBJECT(c_name, structtype) \ extern int lrecord_type_##c_name; \ extern struct lrecord_implementation lrecord_##c_name; \ DECLARE_INLINE_HEADER ( \ @@ -1553,21 +1555,8 @@ } \ extern Lisp_Object Q##c_name##p -# define DECLARE_NONRECORD(c_name, type_enum, structtype) \ -DECLARE_INLINE_HEADER ( \ -structtype * \ -error_check_##c_name (Lisp_Object obj, const Ascbyte *file, int line) \ -) \ -{ \ - assert_at_line (XTYPE (obj) == type_enum, file, line); \ - return (structtype *) XPNTR (obj); \ -} \ -extern Lisp_Object Q##c_name##p - # define XRECORD(x, c_name, structtype) \ error_check_##c_name (x, __FILE__, __LINE__) -# define XNONRECORD(x, c_name, type_enum, structtype) \ - error_check_##c_name (x, __FILE__, __LINE__) DECLARE_INLINE_HEADER ( Lisp_Object @@ -1586,21 +1575,17 @@ #else /* not ERROR_CHECK_TYPES */ -# define DECLARE_LISP_OBJECT(c_name, structtype) \ +# define DECLARE_LISP_OBJECT(c_name, structtype) \ extern Lisp_Object Q##c_name##p; \ extern const struct lrecord_implementation lrecord_##c_name -# define DECLARE_MODULE_API_LRECORD(c_name, structtype) \ -extern MODULE_API Lisp_Object Q##c_name##p; \ +# define DECLARE_MODULE_API_LISP_OBJECT(c_name, structtype) \ +extern MODULE_API Lisp_Object Q##c_name##p; \ extern MODULE_API const struct lrecord_implementation lrecord_##c_name -# define DECLARE_MODULE_LRECORD(c_name, structtype) \ +# define DECLARE_MODULE_LISP_OBJECT(c_name, structtype) \ extern Lisp_Object Q##c_name##p; \ extern int lrecord_type_##c_name; \ extern struct lrecord_implementation lrecord_##c_name -# define DECLARE_NONRECORD(c_name, type_enum, structtype) \ -extern Lisp_Object Q##c_name##p # define XRECORD(x, c_name, structtype) ((structtype *) XPNTR (x)) -# define XNONRECORD(x, c_name, type_enum, structtype) \ - ((structtype *) XPNTR (x)) /* wrap_pointer_1 is so named as a suggestion not to use it unless you know what you're doing. */ #define wrap_record(ptr, ty) wrap_pointer_1 (ptr) @@ -1653,12 +1638,12 @@ - For most objects, simply call ALLOC_LISP_OBJECT (type), where TYPE is the name of the type (e.g. toolbar_button). Such objects can be freed - manually using FREE_LCRECORD. + manually using FREE_LISP_OBJECT. - For objects whose size can vary (and hence which have a size_in_bytes_method rather than a static_size), call ALLOC_SIZED_LISP_OBJECT (size, type), where TYPE is the - name of the type. NOTE: You cannot call FREE_LCRECORD() on such + name of the type. NOTE: You cannot call FREE_LISP_OBJECT() on such on object! (At least when not NEW_GC) - Basic lrecords (of which there are a limited number, which exist only @@ -1674,7 +1659,7 @@ struct lcrecord_list { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object free; Elemcount size; const struct lrecord_implementation *implementation; @@ -1695,7 +1680,7 @@ lrecords. lcrecords themselves are divided into three types: (1) auto-managed, (2) hand-managed, and (3) unmanaged. "Managed" refers to using a special object called an lcrecord-list to keep track of freed - lcrecords, which can freed with FREE_LCRECORD() or the like and later be + lcrecords, which can freed with FREE_LISP_OBJECT() or the like and later be recycled when a new lcrecord is required, rather than requiring new malloc(). Thus, allocation of lcrecords can be very cheap. (Technically, the lcrecord-list manager could divide up large @@ -1711,7 +1696,7 @@ -- "Auto-managed" means that you just go ahead and allocate the lcrecord whenever you want, using ALLOC_LISP_OBJECT(), and the appropriate lcrecord-list manager is automatically created. To free, you just call - "FREE_LCRECORD()" and the appropriate lcrecord-list manager is + "FREE_LISP_OBJECT()" and the appropriate lcrecord-list manager is automatically located and called. The limitation here of course is that all your objects are of the same size. (#### Eventually we should have a more sophisticated system that tracks the sizes seen and creates one @@ -1809,23 +1794,18 @@ #else /* NEW_GC */ -Lisp_Object alloc_sized_lrecord (Bytecount size, - const struct lrecord_implementation *imp); +MODULE_API Lisp_Object alloc_sized_lrecord (Bytecount size, + const struct lrecord_implementation *imp); Lisp_Object noseeum_alloc_sized_lrecord (Bytecount size, - const struct lrecord_implementation *); -Lisp_Object alloc_lrecord (const struct lrecord_implementation *imp); + const struct lrecord_implementation *imp); +MODULE_API Lisp_Object alloc_lrecord (const struct lrecord_implementation *imp); Lisp_Object noseeum_alloc_lrecord (const struct lrecord_implementation *imp); -Lisp_Object alloc_lrecord_array (int elemcount, +MODULE_API Lisp_Object alloc_lrecord_array (int elemcount, const struct lrecord_implementation *imp); -Lisp_Object alloc_sized_lrecord_array (Bytecount size, int elemcount, - const struct lrecord_implementation *imp); - -#define alloc_lrecord_type(type, imp) \ - ((type *) XPNTR (alloc_sized_lrecord (sizeof (type), imp))) - -#define noseeum_alloc_lrecord_type(type, imp) \ - ((type *) XPNTR (noseeum_alloc_sized_lrecord (sizeof (type), imp))) +MODULE_API Lisp_Object alloc_sized_lrecord_array (Bytecount size, + int elemcount, + const struct lrecord_implementation *imp); void free_lrecord (Lisp_Object rec);
--- a/src/lstream.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/lstream.h Mon Dec 28 01:15:52 2009 -0600 @@ -230,7 +230,7 @@ struct lstream { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; const Lstream_implementation *imp; /* methods for this stream */ Lstream_buffering buffering; /* type of buffering in use */ Bytecount buffering_size; /* number of bytes buffered */
--- a/src/mule-charset.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/mule-charset.c Mon Dec 28 01:15:52 2009 -0600 @@ -1001,7 +1001,7 @@ { struct Lisp_Charset *c = XCHARSET (charset); xzero (*stats); - stats->other += LISPOBJ_STORAGE_SIZE (c, sizeof (*c), ovstats); + stats->other += LISP_OBJECT_STORAGE_SIZE (c, sizeof (*c), ovstats); stats->from_unicode += compute_from_unicode_table_size (charset, ovstats); stats->to_unicode += compute_to_unicode_table_size (charset, ovstats); }
--- a/src/number.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/number.h Mon Dec 28 01:15:52 2009 -0600 @@ -71,7 +71,7 @@ struct Lisp_Bignum { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; bignum data; }; typedef struct Lisp_Bignum Lisp_Bignum; @@ -160,7 +160,7 @@ struct Lisp_Ratio { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; ratio data; }; typedef struct Lisp_Ratio Lisp_Ratio; @@ -234,7 +234,7 @@ #ifdef HAVE_BIGFLOAT struct Lisp_Bigfloat { - struct lrecord_header lheader; + FROB_BLOCK_LISP_OBJECT_HEADER lheader; bigfloat bf; }; typedef struct Lisp_Bigfloat Lisp_Bigfloat;
--- a/src/objects-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/objects-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -99,7 +99,7 @@ struct Lisp_Color_Instance { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object name; Lisp_Object device; @@ -119,7 +119,7 @@ struct Lisp_Font_Instance { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object name; /* the instantiator used to create the font instance */ Lisp_Object truename; /* used by the device-specific methods; we need to call them to get the truename (#### in reality,
--- a/src/objects-tty-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/objects-tty-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -30,7 +30,7 @@ struct tty_color_instance_data { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Lisp_Object symbol; /* so we don't have to constantly call Fintern() */ }; @@ -56,7 +56,7 @@ struct tty_font_instance_data { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ Lisp_Object charset; };
--- a/src/objects-tty.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/objects-tty.c Mon Dec 28 01:15:52 2009 -0600 @@ -197,8 +197,8 @@ /* Don't allocate the data until we're sure that we will succeed. */ #ifdef NEW_GC - c->data = alloc_lrecord_type (struct tty_color_instance_data, - &lrecord_tty_color_instance_data); + c->data = + XTTY_COLOR_INSTANCE_DATA (ALLOC_LISP_OBJECT (tty_color_instance_data)); #else /* not NEW_GC */ c->data = xnew (struct tty_color_instance_data); #endif /* not NEW_GC */ @@ -282,8 +282,8 @@ /* Don't allocate the data until we're sure that we will succeed. */ #ifdef NEW_GC - f->data = alloc_lrecord_type (struct tty_font_instance_data, - &lrecord_tty_font_instance_data); + f->data = + XTTY_FONT_INSTANCE_DATA (ALLOC_LISP_OBJECT (tty_font_instance_data)); #else /* not NEW_GC */ f->data = xnew (struct tty_font_instance_data); #endif /* not NEW_GC */
--- a/src/opaque.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/opaque.h Mon Dec 28 01:15:52 2009 -0600 @@ -28,7 +28,7 @@ typedef struct Lisp_Opaque { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Bytecount size; max_align_t data[1]; } Lisp_Opaque; @@ -54,7 +54,7 @@ typedef struct Lisp_Opaque_Ptr { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; void *ptr; } Lisp_Opaque_Ptr;
--- a/src/print.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/print.c Mon Dec 28 01:15:52 2009 -0600 @@ -1489,7 +1489,7 @@ external_object_printer (Lisp_Object obj, Lisp_Object printcharfun, int UNUSED (escapeflag)) { - struct LCRECORD_HEADER *header = (struct LCRECORD_HEADER *) XPNTR (obj); + LISP_OBJECT_HEADER *header = (LISP_OBJECT_HEADER *) XPNTR (obj); if (print_readably) printing_unreadable_object
--- a/src/procimpl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/procimpl.h Mon Dec 28 01:15:52 2009 -0600 @@ -94,7 +94,7 @@ struct Lisp_Process { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* Exit code if process has terminated, signal which stopped/interrupted process
--- a/src/rangetab.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/rangetab.h Mon Dec 28 01:15:52 2009 -0600 @@ -49,7 +49,7 @@ struct Lisp_Range_Table { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; range_table_entry_dynarr *entries; enum range_table_type type; };
--- a/src/scrollbar.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/scrollbar.c Mon Dec 28 01:15:52 2009 -0600 @@ -270,7 +270,7 @@ while (inst) { - total += LISPOBJ_STORAGE_SIZE (inst, sizeof (*inst), ovstats); + total += LISP_OBJECT_STORAGE_SIZE (inst, sizeof (*inst), ovstats); inst = inst->next; }
--- a/src/scrollbar.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/scrollbar.h Mon Dec 28 01:15:52 2009 -0600 @@ -27,7 +27,7 @@ struct scrollbar_instance { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* Used by the frame caches. */ struct scrollbar_instance *next;
--- a/src/specifier.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/specifier.c Mon Dec 28 01:15:52 2009 -0600 @@ -3427,8 +3427,7 @@ if (!sp->caching) #ifdef NEW_GC - sp->caching = alloc_lrecord_type (struct specifier_caching, - &lrecord_specifier_caching); + sp->caching = XSPECIFIER_CACHING (ALLOC_LISP_OBJECT (specifier_caching)); #else /* not NEW_GC */ sp->caching = xnew_and_zero (struct specifier_caching); #endif /* not NEW_GC */
--- a/src/specifier.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/specifier.h Mon Dec 28 01:15:52 2009 -0600 @@ -220,7 +220,7 @@ struct Lisp_Specifier { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; struct specifier_methods *methods; /* we keep a chained list of all current specifiers, for GC cleanup @@ -428,7 +428,7 @@ struct specifier_caching { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ int offset_into_struct_window; void (*value_changed_in_window) (Lisp_Object specifier, struct window *w,
--- a/src/symeval.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/symeval.h Mon Dec 28 01:15:52 2009 -0600 @@ -77,7 +77,7 @@ struct symbol_value_magic { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; void *value; enum symbol_value_type type; }; @@ -401,8 +401,7 @@ do \ { \ struct symbol_value_forward *I_hate_C = \ - alloc_lrecord_type (struct symbol_value_forward, \ - &lrecord_symbol_value_forward); \ + XSYMBOL_VALUE_FORWARD (ALLOC_LISP_OBJECT (symbol_value_forward)); \ /* mcpro ((Lisp_Object) I_hate_C);*/ \ \ MARK_LRECORD_AS_LISP_READONLY (I_hate_C); \ @@ -489,7 +488,7 @@ void flush_all_buffer_local_cache (void); struct multiple_value { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Elemcount count; Elemcount allocated_count; Elemcount first_desired;
--- a/src/syntax.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/syntax.c Mon Dec 28 01:15:52 2009 -0600 @@ -525,8 +525,7 @@ { struct syntax_cache *cache; #ifdef NEW_GC - buf->syntax_cache = alloc_lrecord_type (struct syntax_cache, - &lrecord_syntax_cache); + buf->syntax_cache = XSYNTAX_CACHE (ALLOC_LISP_OBJECT (syntax_cache)); #else /* not NEW_GC */ buf->syntax_cache = xnew_and_zero (struct syntax_cache); #endif /* not NEW_GC */
--- a/src/syntax.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/syntax.h Mon Dec 28 01:15:52 2009 -0600 @@ -296,7 +296,7 @@ struct syntax_cache { #ifdef NEW_GC - struct lrecord_header header; + LISP_OBJECT_HEADER header; #endif /* NEW_GC */ int use_code; /* Whether to use syntax_code or syntax_table. This is set
--- a/src/toolbar.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/toolbar.h Mon Dec 28 01:15:52 2009 -0600 @@ -38,7 +38,7 @@ struct toolbar_button { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object next; Lisp_Object frame;
--- a/src/tooltalk.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/tooltalk.c Mon Dec 28 01:15:52 2009 -0600 @@ -147,7 +147,7 @@ struct Lisp_Tooltalk_Message { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object plist_sym, callback; Tt_message m; }; @@ -223,7 +223,7 @@ struct Lisp_Tooltalk_Pattern { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; Lisp_Object plist_sym, callback; Tt_pattern p; };
--- a/src/ui-gtk.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/ui-gtk.h Mon Dec 28 01:15:52 2009 -0600 @@ -37,7 +37,7 @@ #define MAX_GTK_ARGS 100 typedef struct { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; GtkType return_type; GtkType args[MAX_GTK_ARGS]; gint n_args; @@ -55,7 +55,7 @@ /* Encapsulate a GtkObject in Lisp */ typedef struct { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; gboolean alive_p; GtkObject *object; Lisp_Object plist; @@ -72,7 +72,7 @@ /* Encapsulate a GTK_TYPE_BOXED in lisp */ typedef struct { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; GtkType object_type; void *object; } emacs_gtk_boxed_data;
--- a/src/window-impl.h Sat Dec 26 21:22:48 2009 -0600 +++ b/src/window-impl.h Mon Dec 28 01:15:52 2009 -0600 @@ -84,7 +84,7 @@ struct window { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* The upper left corner coordinates of this window, as integers (pixels) relative to upper left corner of frame = 0, 0 */ @@ -168,7 +168,7 @@ struct window_mirror { - struct LCRECORD_HEADER header; + LISP_OBJECT_HEADER header; /* Frame this mirror is on. */ struct frame *frame;
--- a/src/window.c Sat Dec 26 21:22:48 2009 -0600 +++ b/src/window.c Mon Dec 28 01:15:52 2009 -0600 @@ -3857,7 +3857,7 @@ Lisp_Object obj = ALLOC_LISP_OBJECT (window); struct window *p = XWINDOW (obj); - COPY_LCRECORD (p, o); + COPY_LISP_OBJECT (p, o); /* Don't copy the pointers to the line start cache or the face instances. */ @@ -5165,7 +5165,7 @@ { if (!mir) return; - stats->other += LISPOBJ_STORAGE_SIZE (mir, sizeof (*mir), ovstats); + stats->other += LISP_OBJECT_STORAGE_SIZE (mir, sizeof (*mir), ovstats); #ifdef HAVE_SCROLLBARS { struct device *d = XDEVICE (FRAME_DEVICE (mir->frame)); @@ -5189,7 +5189,7 @@ struct overhead_stats *ovstats) { xzero (*stats); - stats->other += LISPOBJ_STORAGE_SIZE (w, sizeof (*w), ovstats); + stats->other += LISP_OBJECT_STORAGE_SIZE (w, sizeof (*w), ovstats); stats->face += compute_face_cachel_usage (w->face_cachels, ovstats); stats->glyph += compute_glyph_cachel_usage (w->glyph_cachels, ovstats); stats->line_start +=
--- a/src/xemacs.def.in.in Sat Dec 26 21:22:48 2009 -0600 +++ b/src/xemacs.def.in.in Mon Dec 28 01:15:52 2009 -0600 @@ -29,7 +29,8 @@ /* Exported functions */ acons #ifdef NEW_GC -alloc_lrecord /* alloc_lrecord_type */ +alloc_lrecord /* ALLOC_LISP_OBJECT */ +alloc_sized_lrecord /* ALLOC_SIZED_LISP_OBJECT */ lrecord_subr /* DEFSUBR */ lrecord_symbol_value_forward /* DEFVAR_SYMVAL_FWD */ #ifdef DEBUG_XEMACS @@ -37,7 +38,8 @@ #endif mc_alloc /* DEFSUBR */ #else /* not NEW_GC */ -alloc_automanaged_lcrecord /* old_alloc_lcrecord_type */ +alloc_automanaged_lcrecord /* ALLOC_LISP_OBJECT */ +old_alloc_sized_lcrecord /* ALLOC_SIZED_LISP_OBJECT */ #endif /* not NEW_GC */ apply1 #ifdef USE_ASSERTIONS @@ -117,6 +119,7 @@ error_check_string_direct_data error_check_string_indirect_data #endif +error_check_symbol_value_forward #endif free_opaque_ptr get_coding_system_for_text_file