=== modified file 'configure.ac' --- configure.ac 2012-07-14 00:04:10 +0000 +++ configure.ac 2012-07-15 17:14:12 +0000 @@ -4265,6 +4265,8 @@ #define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST +#define ATTRIBUTE_UNUSED _GL_UNUSED + /* Some versions of GNU/Linux define noinline in their headers. */ #ifdef noinline #undef noinline === modified file 'src/alloc.c' --- src/alloc.c 2012-07-15 11:17:09 +0000 +++ src/alloc.c 2012-07-15 15:23:23 +0000 @@ -419,8 +419,9 @@ #endif /* Recording what needs to be marked for gc. */ - +#if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS struct gcpro *gcprolist; +#endif /* Addresses of staticpro'd variables. Initialize it to a nonzero value; otherwise some compilers put it into BSS. */ @@ -4735,7 +4736,7 @@ abort (); } -#elif GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES +#elif GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES && 0 static void dump_zombies (void) @@ -6675,8 +6676,8 @@ void init_alloc (void) { - gcprolist = 0; - byte_stack_list = 0; + IF_GCPRO (gcprolist = NULL); + byte_stack_list = NULL; #if GC_MARK_STACK #if !defined GC_SAVE_REGISTERS_ON_STACK && !defined GC_SETJMP_WORKS setjmp_tested_p = longjmps_done = 0; === modified file 'src/bidi.c' --- src/bidi.c 2012-07-05 18:35:48 +0000 +++ src/bidi.c 2012-07-15 14:43:28 +0000 @@ -2306,7 +2306,7 @@ { int old_level, new_level, next_level; struct bidi_it sentinel; - struct gcpro gcpro1; + DEFGCPRO1; if (bidi_it->charpos < 0 || bidi_it->bytepos < 0) abort (); === modified file 'src/buffer.c' --- src/buffer.c 2012-07-10 23:24:36 +0000 +++ src/buffer.c 2012-07-15 14:43:28 +0000 @@ -1462,7 +1462,7 @@ register struct buffer *b; register Lisp_Object tem; register struct Lisp_Marker *m; - struct gcpro gcpro1; + DEFGCPRO1; if (NILP (buffer_or_name)) buffer = Fcurrent_buffer (); @@ -2181,7 +2181,7 @@ int narrowed = (BEG != BEGV || Z != ZV); int modified_p = !NILP (Fbuffer_modified_p (Qnil)); Lisp_Object old_undo = BVAR (current_buffer, undo_list); - struct gcpro gcpro1; + DEFGCPRO1; if (current_buffer->base_buffer) error ("Cannot do `set-buffer-multibyte' on an indirect buffer"); @@ -4149,7 +4149,7 @@ struct Lisp_Overlay *tail; /* 1 if this change is an insertion. */ int insertion = (after ? XFASTINT (arg3) == 0 : EQ (start, end)); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; overlay = Qnil; tail = NULL; @@ -4253,8 +4253,7 @@ memcpy (copy, XVECTOR (last_overlay_modification_hooks)->contents, size * sizeof (Lisp_Object)); - gcpro1.var = copy; - gcpro1.nvars = size; + IF_GCPRO (gcpro1.var = copy; gcpro1.nvars = size); for (i = 0; i < size;) { @@ -4271,7 +4270,7 @@ call_overlay_mod_hooks (Lisp_Object list, Lisp_Object overlay, int after, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3) { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; GCPRO4 (list, arg1, arg2, arg3); === modified file 'src/callint.c' --- src/callint.c 2012-07-10 16:53:26 +0000 +++ src/callint.c 2012-07-15 14:43:28 +0000 @@ -275,7 +275,7 @@ ptrdiff_t i, nargs; int foo; int arg_from_tty = 0; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; ptrdiff_t key_count; int record_then_fail = 0; @@ -481,8 +481,7 @@ } GCPRO5 (prefix_arg, function, *args, *visargs, up_event); - gcpro3.nvars = nargs; - gcpro4.nvars = nargs; + IF_GCPRO (gcpro3.nvars = nargs; gcpro4.nvars = nargs); if (!NILP (enable)) specbind (Qenable_recursive_minibuffers, Qt); === modified file 'src/callproc.c' --- src/callproc.c 2012-07-09 21:28:39 +0000 +++ src/callproc.c 2012-07-15 14:43:28 +0000 @@ -350,7 +350,7 @@ protected by the caller, so all we really have to worry about is buffer. */ { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; current_dir = BVAR (current_buffer, directory); @@ -409,7 +409,7 @@ /* Search for program; barf if not found. */ { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; GCPRO4 (infile, buffer, current_dir, error_file); openp (Vexec_path, args[0], Vexec_suffixes, &path, make_number (X_OK)); @@ -432,7 +432,7 @@ if (nargs > 4) { ptrdiff_t i; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; GCPRO5 (infile, buffer, current_dir, path, error_file); argument_coding.dst_multibyte = 0; @@ -970,7 +970,7 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &rest ARGS) */) (ptrdiff_t nargs, Lisp_Object *args) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object filename_string; register Lisp_Object start, end; ptrdiff_t count = SPECPDL_INDEX (); === modified file 'src/charset.c' --- src/charset.c 2012-07-05 18:35:48 +0000 +++ src/charset.c 2012-07-15 14:43:28 +0000 @@ -665,7 +665,7 @@ int to_idx = CODE_POINT_TO_INDEX (temp_charset_work->current, to); Lisp_Object range; int c, stop; - struct gcpro gcpro1; + DEFGCPRO1; range = Fcons (Qnil, Qnil); GCPRO1 (range); === modified file 'src/chartab.c' --- src/chartab.c 2011-12-11 00:56:50 +0000 +++ src/chartab.c 2012-07-15 14:43:28 +0000 @@ -882,7 +882,7 @@ Lisp_Object function, Lisp_Object table, Lisp_Object arg) { Lisp_Object range, val, parent; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; uniprop_decoder_t decoder = UNIPROP_GET_DECODER (table); range = Fcons (make_number (0), make_number (MAX_CHAR)); @@ -1052,7 +1052,7 @@ { Lisp_Object range; int c, i; - struct gcpro gcpro1; + DEFGCPRO1; range = Fcons (Qnil, Qnil); GCPRO1 (range); @@ -1328,7 +1328,7 @@ table = XCDR (val); if (STRINGP (table)) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (val); result = Fload (concat2 (build_string ("international/"), table), Qt, Qt, Qt, Qt); === modified file 'src/coding.c' --- src/coding.c 2012-07-11 07:19:44 +0000 +++ src/coding.c 2012-07-15 14:43:28 +0000 @@ -7579,7 +7579,7 @@ code_conversion_restore (Lisp_Object arg) { Lisp_Object current, workbuf; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (arg); current = XCAR (arg); @@ -7787,7 +7787,7 @@ if (! NILP (CODING_ATTR_POST_READ (attrs))) { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; ptrdiff_t prev_Z = Z, prev_Z_BYTE = Z_BYTE; Lisp_Object val; @@ -7932,7 +7932,7 @@ { Lisp_Object args[3]; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; GCPRO5 (coding->src_object, coding->dst_object, src_object, dst_object, old_deactivate_mark); === modified file 'src/data.c' --- src/data.c 2012-07-10 08:43:46 +0000 +++ src/data.c 2012-07-15 14:43:28 +0000 @@ -759,7 +759,7 @@ return Fassq (Qinteractive, Fcdr (XCDR (fun))); else if (EQ (funcar, Qautoload)) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (cmd); do_autoload (fun, cmd); UNGCPRO; @@ -1431,7 +1431,7 @@ { register Lisp_Object args_left; register Lisp_Object val, symbol; - struct gcpro gcpro1; + DEFGCPRO1; if (NILP (args)) return Qnil; === modified file 'src/dbusbind.c' --- src/dbusbind.c 2012-07-10 08:43:46 +0000 +++ src/dbusbind.c 2012-07-15 14:43:28 +0000 @@ -920,7 +920,7 @@ case DBUS_TYPE_DICT_ENTRY: { Lisp_Object result; - struct gcpro gcpro1; + DEFGCPRO1; DBusMessageIter subiter; int subtype; result = Qnil; @@ -1246,7 +1246,7 @@ Lisp_Object interface = Qnil; Lisp_Object member = Qnil; Lisp_Object result; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; + DEFGCPRO6; DBusConnection *connection; DBusMessage *dmessage; DBusMessageIter iter; @@ -1502,7 +1502,7 @@ xd_read_message_1 (DBusConnection *connection, Lisp_Object bus) { Lisp_Object args, key, value; - struct gcpro gcpro1; + DEFGCPRO1; struct input_event event; DBusMessage *dmessage; DBusMessageIter iter; === modified file 'src/dired.c' --- src/dired.c 2012-07-03 18:24:42 +0000 +++ src/dired.c 2012-07-15 14:43:28 +0000 @@ -122,7 +122,7 @@ struct re_pattern_buffer *bufp = NULL; int needsep = 0; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; DIRENTRY *dp; #ifdef WINDOWSNT Lisp_Object w32_save = Qnil; @@ -229,7 +229,7 @@ ptrdiff_t len; int wanted = 0; Lisp_Object name, finalname; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; len = NAMLEN (dp); name = finalname = make_unibyte_string (dp->d_name, len); @@ -289,7 +289,7 @@ /* Construct an expanded filename for the directory entry. Use the decoded names for input to Ffile_attributes. */ Lisp_Object decoded_fullname, fileattrs; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; decoded_fullname = fileattrs = Qnil; GCPRO2 (decoded_fullname, fileattrs); @@ -464,7 +464,7 @@ anything. */ int includeall = 1; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; elt = Qnil; @@ -673,7 +673,7 @@ if (!NILP (predicate)) { Lisp_Object val; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (name); val = call1 (predicate, name); @@ -935,7 +935,7 @@ char modes[sizeof "-rwxr-xr-x "]; Lisp_Object handler; - struct gcpro gcpro1; + DEFGCPRO1; char *uname = NULL, *gname = NULL; filename = Fexpand_file_name (filename, Qnil); === modified file 'src/doc.c' --- src/doc.c 2012-07-10 21:48:34 +0000 +++ src/doc.c 2012-07-15 14:43:28 +0000 @@ -306,7 +306,7 @@ { #if 0 Lisp_Object reply, prompt[3]; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (file); prompt[0] = build_string ("File "); prompt[1] = NILP (file) ? Vdoc_file_name : file; @@ -436,7 +436,7 @@ if (NILP (tem) && try_reload) { /* The file is newer, we need to reset the pointers. */ - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; GCPRO2 (function, raw); try_reload = reread_doc_file (Fcar_safe (doc)); UNGCPRO; @@ -481,7 +481,7 @@ if (NILP (tem) && try_reload) { /* The file is newer, we need to reset the pointers. */ - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; GCPRO3 (symbol, prop, raw); try_reload = reread_doc_file (Fcar_safe (doc)); UNGCPRO; @@ -731,7 +731,7 @@ unsigned char *start; ptrdiff_t length, length_byte; Lisp_Object name; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; int multibyte; ptrdiff_t nchars; === modified file 'src/editfns.c' --- src/editfns.c 2012-07-10 23:24:36 +0000 +++ src/editfns.c 2012-07-15 14:43:28 +0000 @@ -839,7 +839,7 @@ save_excursion_restore (Lisp_Object info) { Lisp_Object tem, tem1, omark, nmark; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; int visible_p; tem = Fmarker_buffer (XCAR (info)); @@ -2939,7 +2939,7 @@ { Lisp_Object tem, string; - struct gcpro gcpro1; + DEFGCPRO1; tem = BVAR (current_buffer, undo_list); GCPRO1 (tem); @@ -3473,7 +3473,7 @@ || FRAME_MSDOS_P (XFRAME (selected_frame))) { Lisp_Object pane, menu; - struct gcpro gcpro1; + DEFGCPRO1; pane = Fcons (Fcons (build_string ("OK"), Qt), Qnil); GCPRO1 (pane); menu = Fcons (val, pane); @@ -3535,7 +3535,7 @@ (ptrdiff_t nargs, Lisp_Object *args) { Lisp_Object properties, string; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; ptrdiff_t i; /* Number of args must be odd. */ @@ -4254,7 +4254,7 @@ if (STRING_INTERVALS (args[0]) || arg_intervals) { Lisp_Object len, new_len, props; - struct gcpro gcpro1; + DEFGCPRO1; /* Add text properties from the format string. */ len = make_number (SCHARS (args[0])); === modified file 'src/emacs.c' --- src/emacs.c 2012-07-12 23:56:39 +0000 +++ src/emacs.c 2012-07-15 14:43:28 +0000 @@ -1971,7 +1971,7 @@ all of which are called before Emacs is actually killed. */) (Lisp_Object arg) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object hook; int exit_code; === modified file 'src/eval.c' --- src/eval.c 2012-07-10 16:53:26 +0000 +++ src/eval.c 2012-07-15 14:57:55 +0000 @@ -253,7 +253,7 @@ (Lisp_Object args) { register Lisp_Object val = Qnil; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args); @@ -277,7 +277,7 @@ (Lisp_Object args) { register Lisp_Object val = Qt; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args); @@ -302,7 +302,7 @@ (Lisp_Object args) { register Lisp_Object cond; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args); cond = eval_sub (Fcar (args)); @@ -326,7 +326,7 @@ (Lisp_Object args) { register Lisp_Object clause, val; - struct gcpro gcpro1; + DEFGCPRO1; val = Qnil; GCPRO1 (args); @@ -353,7 +353,7 @@ (Lisp_Object args) { register Lisp_Object val = Qnil; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args); @@ -376,7 +376,7 @@ { Lisp_Object val; register Lisp_Object args_left; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; args_left = args; val = Qnil; @@ -397,7 +397,7 @@ usage: (prog2 FORM1 FORM2 BODY...) */) (Lisp_Object args) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args); eval_sub (XCAR (args)); @@ -418,7 +418,7 @@ { register Lisp_Object args_left; register Lisp_Object val, sym, lex_binding; - struct gcpro gcpro1; + DEFGCPRO1; if (NILP (args)) return Qnil; @@ -811,7 +811,7 @@ { Lisp_Object varlist, var, val, elt, lexenv; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; GCPRO3 (args, elt, varlist); @@ -875,7 +875,7 @@ register Lisp_Object elt, varlist; ptrdiff_t count = SPECPDL_INDEX (); ptrdiff_t argnum; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; USE_SAFE_ALLOCA; varlist = Fcar (args); @@ -887,7 +887,7 @@ /* Compute the values and store them in `temps'. */ GCPRO2 (args, *temps); - gcpro2.nvars = 0; + IF_GCPRO (gcpro2.nvars = 0); for (argnum = 0; CONSP (varlist); varlist = XCDR (varlist)) { @@ -899,7 +899,7 @@ signal_error ("`let' bindings can have only one value-form", elt); else temps [argnum++] = eval_sub (Fcar (Fcdr (elt))); - gcpro2.nvars = argnum; + IF_GCPRO (gcpro2.nvars = argnum); } UNGCPRO; @@ -941,7 +941,7 @@ (Lisp_Object args) { Lisp_Object test, body; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; GCPRO2 (test, body); @@ -1010,7 +1010,7 @@ if (EQ (tem, Qt) || EQ (tem, Qmacro)) /* Yes, load it and try again. */ { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (form); do_autoload (def, sym); UNGCPRO; @@ -1052,7 +1052,7 @@ (Lisp_Object args) { register Lisp_Object tag; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args); tag = eval_sub (Fcar (args)); @@ -1080,7 +1080,7 @@ c.pdlcount = SPECPDL_INDEX (); c.poll_suppress_count = poll_suppress_count; c.interrupt_input_blocked = interrupt_input_blocked; - c.gcpro = gcprolist; + IF_GCPRO (c.gcpro = gcprolist); c.byte_stack = byte_stack_list; catchlist = &c; @@ -1146,7 +1146,7 @@ #endif byte_stack_list = catch->byte_stack; - gcprolist = catch->gcpro; + IF_GCPRO (gcprolist = catch->gcpro); #ifdef DEBUG_GCPRO gcpro_level = gcprolist ? gcprolist->level + 1 : 0; #endif @@ -1260,7 +1260,7 @@ c.pdlcount = SPECPDL_INDEX (); c.poll_suppress_count = poll_suppress_count; c.interrupt_input_blocked = interrupt_input_blocked; - c.gcpro = gcprolist; + IF_GCPRO (c.gcpro = gcprolist); c.byte_stack = byte_stack_list; if (_setjmp (c.jmp)) { @@ -1315,7 +1315,7 @@ c.pdlcount = SPECPDL_INDEX (); c.poll_suppress_count = poll_suppress_count; c.interrupt_input_blocked = interrupt_input_blocked; - c.gcpro = gcprolist; + IF_GCPRO (c.gcpro = gcprolist); c.byte_stack = byte_stack_list; if (_setjmp (c.jmp)) { @@ -1353,7 +1353,7 @@ c.pdlcount = SPECPDL_INDEX (); c.poll_suppress_count = poll_suppress_count; c.interrupt_input_blocked = interrupt_input_blocked; - c.gcpro = gcprolist; + IF_GCPRO (c.gcpro = gcprolist); c.byte_stack = byte_stack_list; if (_setjmp (c.jmp)) { @@ -1395,7 +1395,7 @@ c.pdlcount = SPECPDL_INDEX (); c.poll_suppress_count = poll_suppress_count; c.interrupt_input_blocked = interrupt_input_blocked; - c.gcpro = gcprolist; + IF_GCPRO (c.gcpro = gcprolist); c.byte_stack = byte_stack_list; if (_setjmp (c.jmp)) { @@ -1437,7 +1437,7 @@ c.pdlcount = SPECPDL_INDEX (); c.poll_suppress_count = poll_suppress_count; c.interrupt_input_blocked = interrupt_input_blocked; - c.gcpro = gcprolist; + IF_GCPRO (c.gcpro = gcprolist); c.byte_stack = byte_stack_list; if (_setjmp (c.jmp)) { @@ -1969,7 +1969,7 @@ { ptrdiff_t count = SPECPDL_INDEX (); Lisp_Object fun; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; /* This is to make sure that loadup.el gives a clear picture of what files are preloaded and when. */ @@ -2028,7 +2028,7 @@ Lisp_Object fun, val, original_fun, original_args; Lisp_Object funcar; struct backtrace backtrace; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; if (handling_signal) abort (); @@ -2122,14 +2122,13 @@ SAFE_ALLOCA_LISP (vals, XINT (numargs)); GCPRO3 (args_left, fun, fun); - gcpro3.var = vals; - gcpro3.nvars = 0; + IF_GCPRO (gcpro3.var = vals; gcpro3.nvars = 0); while (!NILP (args_left)) { vals[argnum++] = eval_sub (Fcar (args_left)); args_left = Fcdr (args_left); - gcpro3.nvars = argnum; + IF_GCPRO (gcpro3.nvars = argnum); } backtrace.args = vals; @@ -2142,14 +2141,14 @@ else { GCPRO3 (args_left, fun, fun); - gcpro3.var = argvals; - gcpro3.nvars = 0; + IF_GCPRO (gcpro3.var = argvals; gcpro3.nvars = 0); maxargs = XSUBR (fun)->max_args; for (i = 0; i < maxargs; args_left = Fcdr (args_left)) { argvals[i] = eval_sub (Fcar (args_left)); - gcpro3.nvars = ++i; + i++; + IF_GCPRO (gcpro3.nvars = i); } UNGCPRO; @@ -2248,12 +2247,12 @@ usage: (apply FUNCTION &rest ARGUMENTS) */) (ptrdiff_t nargs, Lisp_Object *args) { - ptrdiff_t i; + ptrdiff_t i, funcall_nargs; EMACS_INT numargs; register Lisp_Object spread_arg; register Lisp_Object *funcall_args; Lisp_Object fun, retval; - struct gcpro gcpro1; + DEFGCPRO1; USE_SAFE_ALLOCA; fun = args [0]; @@ -2297,7 +2296,8 @@ for (i = numargs; i < XSUBR (fun)->max_args;) funcall_args[++i] = Qnil; GCPRO1 (*funcall_args); - gcpro1.nvars = 1 + XSUBR (fun)->max_args; + funcall_nargs = 1 + XSUBR (fun)->max_args; + IF_GCPRO (gcpro1.nvars = funcall_nargs); } } funcall: @@ -2307,7 +2307,8 @@ { SAFE_ALLOCA_LISP (funcall_args, 1 + numargs); GCPRO1 (*funcall_args); - gcpro1.nvars = 1 + numargs; + funcall_nargs = 1 + numargs; + IF_GCPRO (gcpro1.nvars = funcall_nargs); } memcpy (funcall_args, args, nargs * sizeof (Lisp_Object)); @@ -2321,7 +2322,7 @@ } /* By convention, the caller needs to gcpro Ffuncall's args. */ - retval = Ffuncall (gcpro1.nvars, funcall_args); + retval = Ffuncall (funcall_nargs, funcall_args); UNGCPRO; SAFE_FREE (); @@ -2467,7 +2468,7 @@ Lisp_Object (*funcall) (ptrdiff_t nargs, Lisp_Object *args)) { Lisp_Object sym, val, ret = Qnil; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; /* If we are dying or still initializing, don't do anything--it would probably crash if we tried. */ @@ -2548,17 +2549,17 @@ Lisp_Object apply1 (Lisp_Object fn, Lisp_Object arg) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (fn); if (NILP (arg)) RETURN_UNGCPRO (Ffuncall (1, &fn)); - gcpro1.nvars = 2; + IF_GCPRO (gcpro1.nvars = 2); { Lisp_Object args[2]; args[0] = fn; args[1] = arg; - gcpro1.var = args; + IF_GCPRO (gcpro1.var = args); RETURN_UNGCPRO (Fapply (2, args)); } } @@ -2567,7 +2568,7 @@ Lisp_Object call0 (Lisp_Object fn) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (fn); RETURN_UNGCPRO (Ffuncall (1, &fn)); @@ -2578,13 +2579,13 @@ Lisp_Object call1 (Lisp_Object fn, Lisp_Object arg1) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object args[2]; args[0] = fn; args[1] = arg1; GCPRO1 (args[0]); - gcpro1.nvars = 2; + IF_GCPRO (gcpro1.nvars = 2); RETURN_UNGCPRO (Ffuncall (2, args)); } @@ -2593,13 +2594,13 @@ Lisp_Object call2 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object args[3]; args[0] = fn; args[1] = arg1; args[2] = arg2; GCPRO1 (args[0]); - gcpro1.nvars = 3; + IF_GCPRO (gcpro1.nvars = 3); RETURN_UNGCPRO (Ffuncall (3, args)); } @@ -2608,14 +2609,14 @@ Lisp_Object call3 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object args[4]; args[0] = fn; args[1] = arg1; args[2] = arg2; args[3] = arg3; GCPRO1 (args[0]); - gcpro1.nvars = 4; + IF_GCPRO (gcpro1.nvars = 4); RETURN_UNGCPRO (Ffuncall (4, args)); } @@ -2625,7 +2626,7 @@ call4 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object args[5]; args[0] = fn; args[1] = arg1; @@ -2633,7 +2634,7 @@ args[3] = arg3; args[4] = arg4; GCPRO1 (args[0]); - gcpro1.nvars = 5; + IF_GCPRO (gcpro1.nvars = 5); RETURN_UNGCPRO (Ffuncall (5, args)); } @@ -2643,7 +2644,7 @@ call5 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4, Lisp_Object arg5) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object args[6]; args[0] = fn; args[1] = arg1; @@ -2652,7 +2653,7 @@ args[4] = arg4; args[5] = arg5; GCPRO1 (args[0]); - gcpro1.nvars = 6; + IF_GCPRO (gcpro1.nvars = 6); RETURN_UNGCPRO (Ffuncall (6, args)); } @@ -2662,7 +2663,7 @@ call6 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4, Lisp_Object arg5, Lisp_Object arg6) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object args[7]; args[0] = fn; args[1] = arg1; @@ -2672,7 +2673,7 @@ args[5] = arg5; args[6] = arg6; GCPRO1 (args[0]); - gcpro1.nvars = 7; + IF_GCPRO (gcpro1.nvars = 7); RETURN_UNGCPRO (Ffuncall (7, args)); } @@ -2682,7 +2683,7 @@ call7 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4, Lisp_Object arg5, Lisp_Object arg6, Lisp_Object arg7) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object args[8]; args[0] = fn; args[1] = arg1; @@ -2693,7 +2694,7 @@ args[6] = arg6; args[7] = arg7; GCPRO1 (args[0]); - gcpro1.nvars = 8; + IF_GCPRO (gcpro1.nvars = 8); RETURN_UNGCPRO (Ffuncall (8, args)); } @@ -2903,7 +2904,7 @@ ptrdiff_t i; EMACS_INT numargs; register Lisp_Object *arg_vector; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; register Lisp_Object tem; USE_SAFE_ALLOCA; @@ -2912,14 +2913,14 @@ args_left = args; GCPRO3 (*arg_vector, args_left, fun); - gcpro1.nvars = 0; + IF_GCPRO (gcpro1.nvars = 0); for (i = 0; i < numargs; ) { tem = Fcar (args_left), args_left = Fcdr (args_left); tem = eval_sub (tem); arg_vector[i++] = tem; - gcpro1.nvars = i; + IF_GCPRO (gcpro1.nvars = i); } UNGCPRO; @@ -3227,7 +3228,7 @@ unbind_to (ptrdiff_t count, Lisp_Object value) { Lisp_Object quitf = Vquit_flag; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; GCPRO2 (value, quitf); Vquit_flag = Qnil; @@ -3327,7 +3328,7 @@ register struct backtrace *backlist = backtrace_list; Lisp_Object tail; Lisp_Object tem; - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object old_print_level = Vprint_level; if (NILP (Vprint_level)) === modified file 'src/fileio.c' --- src/fileio.c 2012-07-10 23:24:36 +0000 +++ src/fileio.c 2012-07-15 14:43:28 +0000 @@ -854,7 +854,7 @@ #endif /* not DOS_NT */ ) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (name); default_directory = Fexpand_file_name (default_directory, Qnil); @@ -1803,7 +1803,7 @@ { register Lisp_Object tem, encoded_filename; struct stat statbuf; - struct gcpro gcpro1; + DEFGCPRO1; encoded_filename = ENCODE_FILE (absname); @@ -1873,7 +1873,7 @@ char buf[16 * 1024]; struct stat st, out_st; Lisp_Object handler; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; ptrdiff_t count = SPECPDL_INDEX (); int input_file_statable_p; Lisp_Object encoded_file, encoded_newname; @@ -2159,7 +2159,7 @@ { Lisp_Object handler; Lisp_Object encoded_file; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (filename); if (!NILP (Ffile_directory_p (filename)) @@ -2214,7 +2214,7 @@ (Lisp_Object file, Lisp_Object newname, Lisp_Object ok_if_already_exists) { Lisp_Object handler; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; Lisp_Object encoded_file, encoded_newname, symlink_target; symlink_target = encoded_file = encoded_newname = Qnil; @@ -2305,7 +2305,7 @@ { Lisp_Object handler; Lisp_Object encoded_file, encoded_newname; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; GCPRO4 (file, newname, encoded_file, encoded_newname); encoded_file = encoded_newname = Qnil; @@ -2360,7 +2360,7 @@ { Lisp_Object handler; Lisp_Object encoded_filename, encoded_linkname; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; GCPRO4 (filename, linkname, encoded_filename, encoded_linkname); encoded_filename = encoded_linkname = Qnil; @@ -2739,7 +2739,7 @@ { Lisp_Object handler; int tem; - struct gcpro gcpro1; + DEFGCPRO1; /* If the file name has special constructs in it, call the corresponding file handler. */ @@ -3083,7 +3083,7 @@ Lisp_Object absname1, absname2; struct stat st1, st2; Lisp_Object handler; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; CHECK_STRING (file1); CHECK_STRING (file2); @@ -3260,7 +3260,7 @@ off_t beg_offset, end_offset; register int unprocessed; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; Lisp_Object handler, val, insval, orig_filename, old_undo; Lisp_Object p; ptrdiff_t total = 0; @@ -3768,7 +3768,7 @@ ptrdiff_t this_count = SPECPDL_INDEX (); int multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters)); Lisp_Object conversion_buffer; - struct gcpro gcpro1; + DEFGCPRO1; conversion_buffer = code_conversion_save (1, multibyte); @@ -4556,7 +4556,7 @@ Lisp_Object encoded_filename; int visiting = (EQ (visit, Qt) || STRINGP (visit)); int quietly = !NILP (visit); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; struct buffer *given_buffer; struct coding_system coding; @@ -4863,7 +4863,7 @@ { Lisp_Object annotations; Lisp_Object p, res; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; Lisp_Object original_buffer; int i, used_global = 0; @@ -5193,7 +5193,7 @@ { Lisp_Object args[3], msg; int i, nbytes; - struct gcpro gcpro1; + DEFGCPRO1; char *msgbuf; USE_SAFE_ALLOCA; @@ -5313,7 +5313,7 @@ ptrdiff_t count = SPECPDL_INDEX (); int orig_minibuffer_auto_raise = minibuffer_auto_raise; int old_message_p = 0; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; if (max_specpdl_size < specpdl_size + 40) max_specpdl_size = specpdl_size + 40; @@ -5556,7 +5556,7 @@ Lisp_Object Fread_file_name (Lisp_Object prompt, Lisp_Object dir, Lisp_Object default_filename, Lisp_Object mustmatch, Lisp_Object initial, Lisp_Object predicate) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object args[7]; GCPRO1 (default_filename); === modified file 'src/filelock.c' --- src/filelock.c 2012-07-10 06:23:45 +0000 +++ src/filelock.c 2012-07-15 14:43:28 +0000 @@ -548,7 +548,7 @@ ptrdiff_t locker_size; lock_info_type lock_info; printmax_t pid; - struct gcpro gcpro1; + DEFGCPRO1; USE_SAFE_ALLOCA; /* Don't do locking if the user has opted out. */ === modified file 'src/fns.c' --- src/fns.c 2012-07-15 11:17:09 +0000 +++ src/fns.c 2012-07-15 14:43:28 +0000 @@ -1747,7 +1747,7 @@ { Lisp_Object front, back; register Lisp_Object len, tem; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; EMACS_INT length; front = list; @@ -1775,7 +1775,7 @@ register Lisp_Object tail; Lisp_Object tem; register Lisp_Object l1, l2; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; l1 = org_l1; l2 = org_l2; @@ -2271,7 +2271,7 @@ register Lisp_Object tail; Lisp_Object dummy; register EMACS_INT i; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; if (vals) { @@ -2280,8 +2280,7 @@ vals[i] = Qnil; GCPRO3 (dummy, fn, seq); - gcpro1.var = vals; - gcpro1.nvars = leni; + IF_GCPRO (gcpro1.var = vals; gcpro1.nvars = leni); } else GCPRO2 (fn, seq); @@ -2353,7 +2352,7 @@ EMACS_INT nargs; ptrdiff_t i; register Lisp_Object *args; - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object ret; USE_SAFE_ALLOCA; @@ -2452,7 +2451,7 @@ { register Lisp_Object ans; Lisp_Object args[2]; - struct gcpro gcpro1; + DEFGCPRO1; CHECK_STRING (prompt); @@ -2614,7 +2613,7 @@ (Lisp_Object feature, Lisp_Object filename, Lisp_Object noerror) { register Lisp_Object tem; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; int from_file = load_in_progress; CHECK_SYMBOL (feature); @@ -2761,7 +2760,7 @@ { /* This function can GC. */ Lisp_Object newargs[3]; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; Lisp_Object result; newargs[0] = Fwidget_get (args[0], args[1]); @@ -2812,7 +2811,7 @@ Lisp_Object v = Fmake_vector (make_number (7), Qnil); const int days[7] = {DAY_1, DAY_2, DAY_3, DAY_4, DAY_5, DAY_6, DAY_7}; int i; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (v); synchronize_system_time_locale (); for (i = 0; i < 7; i++) @@ -2836,7 +2835,7 @@ const int months[12] = {MON_1, MON_2, MON_3, MON_4, MON_5, MON_6, MON_7, MON_8, MON_9, MON_10, MON_11, MON_12}; int i; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (v); synchronize_system_time_locale (); for (i = 0; i < 12; i++) === modified file 'src/frame.c' --- src/frame.c 2012-07-11 04:31:53 +0000 +++ src/frame.c 2012-07-15 14:43:28 +0000 @@ -370,7 +370,7 @@ make_frame_without_minibuffer (register Lisp_Object mini_window, KBOARD *kb, Lisp_Object display) { register struct frame *f; - struct gcpro gcpro1; + DEFGCPRO1; if (!NILP (mini_window)) CHECK_LIVE_WINDOW (mini_window); @@ -1486,7 +1486,7 @@ Lisp_Object x, y, retval; int col, row; Time long_dummy; - struct gcpro gcpro1; + DEFGCPRO1; f = SELECTED_FRAME (); x = y = Qnil; @@ -2147,7 +2147,7 @@ Lisp_Object alist; FRAME_PTR f; int height, width; - struct gcpro gcpro1; + DEFGCPRO1; if (NILP (frame)) frame = selected_frame; @@ -2751,7 +2751,7 @@ int left_no_change = 0, top_no_change = 0; int icon_left_no_change = 0, icon_top_no_change = 0; int size_changed = 0; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; i = 0; for (tail = alist; CONSP (tail); tail = XCDR (tail)) @@ -2776,8 +2776,7 @@ alist = tail = Qnil; GCPRO2 (*parms, *values); - gcpro1.nvars = i; - gcpro2.nvars = i; + IF_GCPRO (gcpro1.nvars = i; gcpro2.nvars = i); /* There is no need to gcpro LEFT, TOP, ICON_LEFT, or ICON_TOP, because their values appear in VALUES and strings are not valid. */ === modified file 'src/gtkutil.c' --- src/gtkutil.c 2012-07-10 21:48:34 +0000 +++ src/gtkutil.c 2012-07-15 14:43:28 +0000 @@ -1830,7 +1830,7 @@ if (default_filename) { Lisp_Object file; - struct gcpro gcpro1; + DEFGCPRO1; char *utf8_filename; GCPRO1 (file); @@ -4224,7 +4224,7 @@ { int i; Lisp_Object file, rtl_name; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; GCPRO2 (file, rtl_name); rtl_name = Ffile_name_nondirectory (rtl); === modified file 'src/indent.c' --- src/indent.c 2012-06-28 12:29:37 +0000 +++ src/indent.c 2012-07-15 15:21:14 +0000 @@ -1978,7 +1978,7 @@ struct window *w; Lisp_Object old_buffer; EMACS_INT old_charpos IF_LINT (= 0), old_bytepos IF_LINT (= 0); - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO1; Lisp_Object lcols = Qnil; double cols IF_LINT (= 0); void *itdata = NULL; @@ -1999,7 +1999,7 @@ w = XWINDOW (window); old_buffer = Qnil; - GCPRO3 (old_buffer, old_charpos, old_bytepos); + GCPRO1 (old_buffer); if (XBUFFER (w->buffer) != current_buffer) { /* Set the window's buffer temporarily to the current buffer. */ === modified file 'src/insdel.c' --- src/insdel.c 2012-07-03 18:24:42 +0000 +++ src/insdel.c 2012-07-15 14:43:28 +0000 @@ -910,7 +910,7 @@ ptrdiff_t nchars, ptrdiff_t nbytes, int inherit, int before_markers) { - struct gcpro gcpro1; + DEFGCPRO1; ptrdiff_t outgoing_nbytes = nbytes; INTERVAL intervals; @@ -1291,7 +1291,7 @@ ptrdiff_t insbytes = SBYTES (new); ptrdiff_t from_byte, to_byte; ptrdiff_t nbytes_del, nchars_del; - struct gcpro gcpro1; + DEFGCPRO1; INTERVAL intervals; ptrdiff_t outgoing_insbytes = insbytes; Lisp_Object deletion; @@ -1578,7 +1578,7 @@ { ptrdiff_t from_byte, to_byte; Lisp_Object deletion; - struct gcpro gcpro1; + DEFGCPRO1; /* Make args be valid */ if (from < BEGV) @@ -1839,7 +1839,7 @@ if (preserve_ptr) { Lisp_Object preserve_marker; - struct gcpro gcpro1; + DEFGCPRO1; preserve_marker = Fcopy_marker (make_number (*preserve_ptr), Qnil); GCPRO1 (preserve_marker); verify_interval_modification (current_buffer, start, end); @@ -1958,7 +1958,7 @@ Lisp_Object start, end; Lisp_Object start_marker, end_marker; Lisp_Object preserve_marker; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; ptrdiff_t count = SPECPDL_INDEX (); if (inhibit_modification_hooks) === modified file 'src/keyboard.c' --- src/keyboard.c 2012-07-12 03:45:46 +0000 +++ src/keyboard.c 2012-07-15 14:44:46 +0000 @@ -2282,7 +2282,7 @@ volatile Lisp_Object previous_echo_area_message; volatile Lisp_Object also_record; volatile int reread; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; int volatile polling_stopped_here = 0; struct kboard *orig_kboard = current_kboard; @@ -3004,7 +3004,7 @@ Lisp_Object keys; ptrdiff_t key_count; int key_count_reset; - struct gcpro gcpro1; + DEFGCPRO1; ptrdiff_t count = SPECPDL_INDEX (); /* Save the echo status. */ @@ -4329,7 +4329,7 @@ EMACS_TIME now; EMACS_TIME idleness_now; Lisp_Object timers, idle_timers, chosen_timer; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; nexttime = invalid_emacs_time (); @@ -7564,7 +7564,7 @@ static void menu_bar_item (Lisp_Object key, Lisp_Object item, Lisp_Object dummy1, void *dummy2) { - struct gcpro gcpro1; + DEFGCPRO1; int i; Lisp_Object tem; @@ -8064,7 +8064,7 @@ process_tool_bar_item (Lisp_Object key, Lisp_Object def, Lisp_Object data, void *args) { int i; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; /* Protect KEY and DEF from GC because parse_tool_bar_item may call eval. */ @@ -9074,7 +9074,7 @@ int junk; #endif - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (fake_prefixed_keys); raw_keybuf_count = 0; @@ -9869,7 +9869,7 @@ Scan from indec.end until we find a bound suffix. */ while (indec.end < t) { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; int done, diff; GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame); @@ -9903,7 +9903,7 @@ /* Continue scan from fkey.end until we find a bound suffix. */ while (fkey.end < indec.start) { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; int done, diff; GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame); @@ -9932,7 +9932,7 @@ Scan from keytran.end until we find a bound suffix. */ while (keytran.end < fkey.start) { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; int done, diff; GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame); @@ -10127,7 +10127,7 @@ { Lisp_Object keybuf[30]; register int i; - struct gcpro gcpro1; + DEFGCPRO1; ptrdiff_t count = SPECPDL_INDEX (); if (!NILP (prompt)) @@ -10141,7 +10141,7 @@ memset (keybuf, 0, sizeof keybuf); GCPRO1 (keybuf[0]); - gcpro1.nvars = (sizeof keybuf/sizeof (keybuf[0])); + IF_GCPRO (gcpro1.nvars = sizeof keybuf / sizeof keybuf[0]); if (NILP (continue_echo)) { @@ -10184,7 +10184,7 @@ { Lisp_Object keybuf[30]; register int i; - struct gcpro gcpro1; + DEFGCPRO1; ptrdiff_t count = SPECPDL_INDEX (); if (!NILP (prompt)) @@ -10198,7 +10198,7 @@ memset (keybuf, 0, sizeof keybuf); GCPRO1 (keybuf[0]); - gcpro1.nvars = (sizeof keybuf / sizeof (keybuf[0])); + IF_GCPRO (gcpro1.nvars = sizeof keybuf / sizeof keybuf[0]); if (NILP (continue_echo)) { @@ -10274,7 +10274,7 @@ if (CONSP (final) && (tem = Fcar (final), EQ (tem, Qautoload))) { - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; GCPRO2 (cmd, prefixarg); do_autoload (final, cmd); @@ -10616,7 +10616,7 @@ ptrdiff_t count = SPECPDL_INDEX (); int old_height, old_width; int width, height; - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object hook; if (tty_list && tty_list->next) @@ -10873,7 +10873,7 @@ if (immediate_quit && NILP (Vinhibit_quit)) { struct gl_state_s saved; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; immediate_quit = 0; sigfree (); === modified file 'src/keymap.c' --- src/keymap.c 2012-07-15 07:57:54 +0000 +++ src/keymap.c 2012-07-15 14:43:28 +0000 @@ -256,7 +256,7 @@ { if (autoload) { - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; GCPRO2 (tem, object); do_autoload (tem, object); @@ -324,7 +324,7 @@ (Lisp_Object keymap, Lisp_Object parent) { Lisp_Object list, prev; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; /* Flush any reverse-map cache. */ where_is_cache = Qnil; where_is_cache_keymaps = Qt; @@ -398,7 +398,7 @@ { /* See if there is a meta-map. If there's none, there is no binding for IDX, unless a default binding exists in MAP. */ - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object event_meta_binding, event_meta_map; GCPRO1 (map); /* A strange value in which Meta is set would cause @@ -430,7 +430,7 @@ Lisp_Object t_binding = Qunbound; Lisp_Object retval = Qunbound; Lisp_Object retval_tail = Qnil; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; GCPRO4 (tail, idx, t_binding, retval); @@ -586,7 +586,7 @@ Lisp_Object args, void *data) { - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; Lisp_Object tail = (CONSP (map) && EQ (Qkeymap, XCAR (map))) ? XCDR (map) : map; @@ -634,7 +634,7 @@ void map_keymap (Lisp_Object map, map_keymap_function_t fun, Lisp_Object args, void *data, int autoload) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args); map = get_keymap (map, 1, autoload); while (CONSP (map)) @@ -659,7 +659,7 @@ void map_keymap_canonical (Lisp_Object map, map_keymap_function_t fun, Lisp_Object args, void *data) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args); /* map_keymap_canonical may be used from redisplay (e.g. when building menus) so be careful to ignore errors and to inhibit redisplay. */ @@ -676,7 +676,7 @@ If KEYMAP has a parent, this function returns it without processing it. */) (Lisp_Object function, Lisp_Object keymap) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (function); keymap = get_keymap (keymap, 1, 1); keymap = map_keymap_internal (keymap, map_keymap_call, function, NULL); @@ -1120,7 +1120,7 @@ int metized = 0; int meta_bit; ptrdiff_t length; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; GCPRO3 (keymap, key, def); keymap = get_keymap (keymap, 1, 1); @@ -1276,7 +1276,7 @@ register Lisp_Object c; ptrdiff_t length; int t_ok = !NILP (accept_default); - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; GCPRO2 (keymap, key); keymap = get_keymap (keymap, 1, 1); @@ -1791,7 +1791,7 @@ int nmaps; Lisp_Object binding; int i, j; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; nmaps = current_minor_maps (&modes, &maps); /* Note that all these maps are GCPRO'd @@ -2603,7 +2603,7 @@ Lisp_Object found = Qnil; /* 1 means ignore all menu bindings entirely. */ int nomenus = !NILP (firstonly) && !EQ (firstonly, Qnon_ascii); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; + DEFGCPRO6; /* List of sequences found via remapping. Keep them in a separate variable, so as to push them later, since we prefer non-remapped binding. */ @@ -2819,7 +2819,7 @@ Lisp_Object outbuf, shadow; int nomenu = NILP (menus); register Lisp_Object start1; - struct gcpro gcpro1; + DEFGCPRO1; const char *alternate_heading = "\ @@ -2999,7 +2999,7 @@ int always_title, int mention_shadow) { Lisp_Object maps, orig_maps, seen, sub_shadows; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; int something = 0; const char *key_heading = "\ @@ -3213,7 +3213,7 @@ Lisp_Object suppress; Lisp_Object kludge; int first = 1; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; /* These accumulate the values from sparse keymap bindings, so we can sort them and handle them in order. */ @@ -3454,7 +3454,7 @@ Lisp_Object suppress; Lisp_Object kludge; int first = 1; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; /* Range of elements to be handled. */ int from, to, stop; Lisp_Object character; === modified file 'src/lisp.h' --- src/lisp.h 2012-07-15 11:17:09 +0000 +++ src/lisp.h 2012-07-15 17:15:02 +0000 @@ -1948,6 +1948,24 @@ defvar_kboard (&ko_fwd, lname, offsetof (KBOARD, vname ## _)); \ } while (0) +/* Values of GC_MARK_STACK during compilation: + + 0 Use GCPRO as before + 1 Do the real thing, make GCPROs and UNGCPRO no-ops. + 2 Mark the stack, and check that everything GCPRO'd is + marked. + 3 Mark using GCPRO's, mark stack last, and count how many + dead objects are kept alive. */ + + +#define GC_USE_GCPROS_AS_BEFORE 0 +#define GC_MAKE_GCPROS_NOOPS 1 +#define GC_MARK_STACK_CHECK_GCPROS 2 +#define GC_USE_GCPROS_CHECK_ZOMBIES 3 + +#ifndef GC_MARK_STACK +#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS +#endif /* Structure for recording Lisp call stack for backtrace purposes. */ @@ -2032,7 +2050,9 @@ Lisp_Object tag; Lisp_Object val; struct catchtag *next; +#if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS struct gcpro *gcpro; +#endif jmp_buf jmp; struct backtrace *backlist; struct handler *handlerlist; @@ -2099,6 +2119,8 @@ extern EMACS_INT memory_full_cons_threshold; +#if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS + /* Structure for recording stack slots that need marking. */ /* This is a chain of structures, each of which points at a Lisp_Object @@ -2129,24 +2151,7 @@ #endif }; -/* Values of GC_MARK_STACK during compilation: - - 0 Use GCPRO as before - 1 Do the real thing, make GCPROs and UNGCPRO no-ops. - 2 Mark the stack, and check that everything GCPRO'd is - marked. - 3 Mark using GCPRO's, mark stack last, and count how many - dead objects are kept alive. */ - - -#define GC_USE_GCPROS_AS_BEFORE 0 -#define GC_MAKE_GCPROS_NOOPS 1 -#define GC_MARK_STACK_CHECK_GCPROS 2 -#define GC_USE_GCPROS_CHECK_ZOMBIES 3 - -#ifndef GC_MARK_STACK -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS -#endif +#endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ /* Whether we do the stack marking manually. */ #define BYTE_MARK_STACK !(GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS \ @@ -2155,24 +2160,33 @@ #if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS -/* Do something silly with gcproN vars just so gcc shuts up. */ -/* You get warnings from MIPSPro... */ +#define DEFGCPRO1 void *__dummy ATTRIBUTE_UNUSED = &__dummy +#define DEFGCPRO2 void *__dummy ATTRIBUTE_UNUSED = &__dummy +#define DEFGCPRO3 void *__dummy ATTRIBUTE_UNUSED = &__dummy +#define DEFGCPRO4 void *__dummy ATTRIBUTE_UNUSED = &__dummy +#define DEFGCPRO5 void *__dummy ATTRIBUTE_UNUSED = &__dummy +#define DEFGCPRO6 void *__dummy ATTRIBUTE_UNUSED = &__dummy -#define GCPRO1(varname) ((void) gcpro1) -#define GCPRO2(varname1, varname2) ((void) gcpro2, (void) gcpro1) -#define GCPRO3(varname1, varname2, varname3) \ - ((void) gcpro3, (void) gcpro2, (void) gcpro1) -#define GCPRO4(varname1, varname2, varname3, varname4) \ - ((void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1) -#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \ - ((void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1) -#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \ - ((void) gcpro6, (void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, \ - (void) gcpro1) +#define GCPRO1(a) ((void) 0) +#define GCPRO2(a,b) ((void) 0) +#define GCPRO3(a,b,c) ((void) 0) +#define GCPRO4(a,b,c,d) ((void) 0) +#define GCPRO5(a,b,c,d,e) ((void) 0) +#define GCPRO6(a,b,c,d,e,f) ((void) 0) #define UNGCPRO ((void) 0) +#define RETURN_UNGCPRO(exp) do { return (exp); } while (0) + +#define IF_GCPRO(code) do { } while (0) #else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ +#define DEFGCPRO1 struct gcpro gcpro1 +#define DEFGCPRO2 struct gcpro gcpro1, gcpro2 +#define DEFGCPRO3 struct gcpro gcpro1, gcpro2, gcpro3 +#define DEFGCPRO4 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4 +#define DEFGCPRO5 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5 +#define DEFGCPRO6 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6 + #ifndef DEBUG_GCPRO #define GCPRO1(varname) \ @@ -2216,7 +2230,7 @@ #define UNGCPRO (gcprolist = gcpro1.next) -#else +#else /* DEBUG_GCPRO */ extern int gcpro_level; @@ -2276,19 +2290,21 @@ : ((gcprolist = gcpro1.next), 0)) #endif /* DEBUG_GCPRO */ -#endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ +#define IF_GCPRO(code) do { code; } while (0) /* Evaluate expr, UNGCPRO, and then return the value of expr. */ #define RETURN_UNGCPRO(expr) \ -do \ + do \ { \ Lisp_Object ret_ungc_val; \ ret_ungc_val = (expr); \ UNGCPRO; \ return ret_ungc_val; \ } \ -while (0) + while (0) + +#endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ /* Call staticpro (&var) to protect static variable `var'. */ === modified file 'src/lread.c' --- src/lread.c 2012-07-12 03:45:46 +0000 +++ src/lread.c 2012-07-15 14:43:28 +0000 @@ -1015,7 +1015,7 @@ register FILE *stream; register int fd = -1; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; Lisp_Object found, efound, hist_file_name; /* 1 means we printed the ".el is newer" message. */ int newer = 0; @@ -1442,7 +1442,7 @@ ptrdiff_t want_length; Lisp_Object filename; struct stat st; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; + DEFGCPRO6; Lisp_Object string, tail, encoded_fn; ptrdiff_t max_suffix_len = 0; @@ -1674,7 +1674,7 @@ register int c; register Lisp_Object val; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; struct buffer *b = 0; int continue_reading_p; Lisp_Object lex_bound; @@ -2540,7 +2540,7 @@ if (c == '(') { Lisp_Object tmp; - struct gcpro gcpro1; + DEFGCPRO1; int ch; /* Read the string itself. */ @@ -3459,7 +3459,7 @@ { Lisp_Object val, tail; register Lisp_Object elt, tem; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; /* 0 is the normal case. 1 means this list is a doc reference; replace it with the number 0. 2 means this list is a doc reference; replace it with the doc string. */ === modified file 'src/macros.c' --- src/macros.c 2012-07-05 18:35:48 +0000 +++ src/macros.c 2012-07-15 14:43:28 +0000 @@ -303,7 +303,7 @@ Lisp_Object tem; ptrdiff_t pdlcount = SPECPDL_INDEX (); EMACS_INT repeat = 1; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; EMACS_INT success_count = 0; executing_kbd_macro_iterations = 0; === modified file 'src/menu.c' --- src/menu.c 2012-07-05 18:35:48 +0000 +++ src/menu.c 2012-07-15 14:43:28 +0000 @@ -290,7 +290,7 @@ Lisp_Object prefix, int maxdepth) { struct skp skp; - struct gcpro gcpro1; + DEFGCPRO1; skp.pending_maps = Qnil; skp.maxdepth = maxdepth; @@ -338,7 +338,7 @@ single_menu_item (Lisp_Object key, Lisp_Object item, Lisp_Object dummy, void *skp_v) { Lisp_Object map, item_string, enabled; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; int res; struct skp *skp = skp_v; @@ -1083,7 +1083,7 @@ int keymaps = 0; int for_click = 0; ptrdiff_t specpdl_count = SPECPDL_INDEX (); - struct gcpro gcpro1; + DEFGCPRO1; if (NILP (position)) /* This is an obsolete call, which wants us to precompute the === modified file 'src/minibuf.c' --- src/minibuf.c 2012-07-11 07:19:44 +0000 +++ src/minibuf.c 2012-07-15 14:43:28 +0000 @@ -191,7 +191,7 @@ static Lisp_Object string_to_object (Lisp_Object val, Lisp_Object defalt) { - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; Lisp_Object expr_and_pos; ptrdiff_t pos; @@ -396,7 +396,7 @@ Lisp_Object val; ptrdiff_t count = SPECPDL_INDEX (); Lisp_Object mini_frame, ambient_dir, minibuffer, input_method; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + DEFGCPRO5; Lisp_Object enable_multibyte; EMACS_INT pos = 0; /* String to add to the history. */ @@ -953,7 +953,7 @@ (Lisp_Object prompt, Lisp_Object initial_contents, Lisp_Object keymap, Lisp_Object read, Lisp_Object hist, Lisp_Object default_value, Lisp_Object inherit_input_method) { Lisp_Object histvar, histpos, val; - struct gcpro gcpro1; + DEFGCPRO1; CHECK_STRING (prompt); if (NILP (keymap)) @@ -1258,7 +1258,7 @@ int matchcount = 0; ptrdiff_t bindcount = -1; Lisp_Object bucket, zero, end, tem; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; CHECK_STRING (string); if (type == function_table) @@ -1522,7 +1522,7 @@ ptrdiff_t idx = 0, obsize = 0; ptrdiff_t bindcount = -1; Lisp_Object bucket, tem, zero; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; CHECK_STRING (string); if (type == 0) === modified file 'src/print.c' --- src/print.c 2012-07-05 18:35:48 +0000 +++ src/print.c 2012-07-15 16:16:31 +0000 @@ -416,7 +416,7 @@ ptrdiff_t i; ptrdiff_t size = SCHARS (string); ptrdiff_t size_byte = SBYTES (string); - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (string); if (size == size_byte) for (i = 0; i < size; i++) @@ -588,7 +588,6 @@ (Lisp_Object object, Lisp_Object noescape) { Lisp_Object printcharfun; - /* struct gcpro gcpro1, gcpro2; */ Lisp_Object save_deactivate_mark; ptrdiff_t count = SPECPDL_INDEX (); struct buffer *previous; @@ -602,7 +601,6 @@ but we don't want to deactivate the mark just for that. No need for specbind, since errors deactivate the mark. */ save_deactivate_mark = Vdeactivate_mark; - /* GCPRO2 (object, save_deactivate_mark); */ abort_on_gc++; printcharfun = Vprin1_to_string_buffer; @@ -625,7 +623,6 @@ set_buffer_internal (previous); Vdeactivate_mark = save_deactivate_mark; - /* UNGCPRO; */ abort_on_gc--; return unbind_to (count, object); @@ -691,7 +688,7 @@ (Lisp_Object object, Lisp_Object printcharfun) { PRINTDECLARE; - struct gcpro gcpro1; + DEFGCPRO1; if (NILP (printcharfun)) printcharfun = Vstandard_output; @@ -818,7 +815,7 @@ { struct buffer *old = current_buffer; Lisp_Object value; - struct gcpro gcpro1; + DEFGCPRO1; /* If OBJ is (error STRING), just return STRING. That is not only faster, it also avoids the need to allocate @@ -852,7 +849,7 @@ Lisp_Object caller) { Lisp_Object errname, errmsg, file_error, tail; - struct gcpro gcpro1; + DEFGCPRO1; if (context != 0) write_string_1 (context, -1, stream); @@ -1397,7 +1394,7 @@ else { register ptrdiff_t i_byte; - struct gcpro gcpro1; + DEFGCPRO1; unsigned char *str; ptrdiff_t size_byte; /* 1 means we must ensure that the next character we output @@ -1710,7 +1707,7 @@ ptrdiff_t i; int len; unsigned char c; - struct gcpro gcpro1; + DEFGCPRO1; ptrdiff_t size_in_chars = ((XBOOL_VECTOR (obj)->size + BOOL_VECTOR_BITS_PER_CHAR - 1) / BOOL_VECTOR_BITS_PER_CHAR); === modified file 'src/process.c' --- src/process.c 2012-07-13 00:07:29 +0000 +++ src/process.c 2012-07-15 14:43:28 +0000 @@ -1291,7 +1291,7 @@ function. The argument list is protected by the caller, so all we really have to worry about is buffer. */ { - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; current_dir = BVAR (current_buffer, directory); @@ -1359,7 +1359,7 @@ /* Qt denotes we have not yet called Ffind_operation_coding_system. */ Lisp_Object coding_systems = Qt; Lisp_Object val, *args2; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; val = Vcoding_system_for_read; if (NILP (val)) @@ -1420,7 +1420,7 @@ && !(SCHARS (program) > 1 && IS_DEVICE_SEP (SREF (program, 1)))) { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; tem = Qnil; GCPRO4 (name, program, buffer, current_dir); @@ -1445,7 +1445,7 @@ { Lisp_Object arg_encoding = Qnil; - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (tem); /* Encode the file name and put it in NEW_ARGV. @@ -2444,7 +2444,7 @@ struct Lisp_Process *p; Lisp_Object contact = Qnil; Lisp_Object proc = Qnil; - struct gcpro gcpro1; + DEFGCPRO1; contact = Flist (nargs, args); GCPRO1 (contact); @@ -2561,7 +2561,7 @@ int fd = -1; Lisp_Object proc, contact, port; struct Lisp_Process *p; - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object name, buffer; Lisp_Object tem, val; ptrdiff_t specpdl_count = -1; @@ -2863,7 +2863,7 @@ int ret = 0; int xerrno = 0; int s = -1, outch, inch; - struct gcpro gcpro1; + DEFGCPRO1; ptrdiff_t count = SPECPDL_INDEX (); ptrdiff_t count1; Lisp_Object QCaddress; /* one of QClocal or QCremote */ @@ -3459,7 +3459,7 @@ { /* Setup coding systems for communicating with the network stream. */ - struct gcpro gcpro1; + DEFGCPRO1; /* Qt denotes we have not yet called Ffind_operation_coding_system. */ Lisp_Object coding_systems = Qt; Lisp_Object fargs[5], val; @@ -6574,7 +6574,7 @@ { register Lisp_Object proc, buffer; Lisp_Object tail, msg; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; tail = Qnil; msg = Qnil; === modified file 'src/sound.c' --- src/sound.c 2012-07-11 02:16:25 +0000 +++ src/sound.c 2012-07-15 14:43:28 +0000 @@ -1342,7 +1342,7 @@ #ifndef WINDOWSNT Lisp_Object file; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; Lisp_Object args[2]; #else /* WINDOWSNT */ int len = 0; === modified file 'src/sysdep.c' --- src/sysdep.c 2012-07-11 07:05:21 +0000 +++ src/sysdep.c 2012-07-15 14:43:28 +0000 @@ -2319,7 +2319,7 @@ list_system_processes (void) { Lisp_Object procdir, match, proclist, next; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; register Lisp_Object tail; GCPRO2 (procdir, match); @@ -2359,7 +2359,7 @@ struct kinfo_proc *procs; size_t i; - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object proclist = Qnil; if (sysctl (mib, 3, NULL, &len, NULL, 0) != 0) @@ -2581,7 +2581,7 @@ double pcpu, pmem; Lisp_Object attrs = Qnil; Lisp_Object cmd_str, decoded_cmd, tem; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; CHECK_NUMBER_OR_FLOAT (pid); CONS_TO_INTEGER (pid, pid_t, proc_id); @@ -2819,7 +2819,7 @@ gid_t gid; Lisp_Object attrs = Qnil; Lisp_Object decoded_cmd, tem; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; CHECK_NUMBER_OR_FLOAT (pid); CONS_TO_INTEGER (pid, pid_t, proc_id); @@ -2948,7 +2948,7 @@ struct kinfo_proc proc; size_t proclen = sizeof proc; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; Lisp_Object attrs = Qnil; Lisp_Object decoded_comm; === modified file 'src/textprop.c' --- src/textprop.c 2012-07-10 16:53:26 +0000 +++ src/textprop.c 2012-07-15 14:43:28 +0000 @@ -356,7 +356,7 @@ Lisp_Object tail1, tail2, sym1, val1; register int changed = 0; register int found; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; tail1 = plist; sym1 = Qnil; @@ -1135,7 +1135,7 @@ register INTERVAL i, unchanged; register ptrdiff_t s, len; register int modified = 0; - struct gcpro gcpro1; + DEFGCPRO1; properties = validate_plist (properties); if (NILP (properties)) @@ -1775,7 +1775,7 @@ Lisp_Object plist; ptrdiff_t s, e, e2, p, len; int modified = 0; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; i = validate_interval_range (src, &start, &end, soft); if (NULL_INTERVAL_P (i)) @@ -1922,7 +1922,7 @@ int add_text_properties_from_list (Lisp_Object object, Lisp_Object list, Lisp_Object delta) { - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; int modified_p = 0; GCPRO2 (list, object); @@ -1990,7 +1990,7 @@ static void call_mod_hooks (Lisp_Object list, Lisp_Object start, Lisp_Object end) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (list); while (!NILP (list)) { @@ -2017,7 +2017,7 @@ Lisp_Object hooks; register Lisp_Object prev_mod_hooks; Lisp_Object mod_hooks; - struct gcpro gcpro1; + DEFGCPRO1; hooks = Qnil; prev_mod_hooks = Qnil; === modified file 'src/undo.c' --- src/undo.c 2012-07-10 23:24:36 +0000 +++ src/undo.c 2012-07-15 14:43:28 +0000 @@ -450,7 +450,7 @@ Return what remains of the list. */) (Lisp_Object n, Lisp_Object list) { - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; Lisp_Object next; ptrdiff_t count = SPECPDL_INDEX (); register EMACS_INT arg; === modified file 'src/w32.c' --- src/w32.c 2012-07-10 23:24:36 +0000 +++ src/w32.c 2012-07-15 14:43:28 +0000 @@ -3995,7 +3995,7 @@ Lisp_Object list_system_processes (void) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object proclist = Qnil; HANDLE h_snapshot; @@ -4149,7 +4149,7 @@ Lisp_Object system_process_attributes (Lisp_Object pid) { - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; Lisp_Object attrs = Qnil; Lisp_Object cmd_str, decoded_cmd, tem; HANDLE h_snapshot, h_proc; === modified file 'src/w32fns.c' --- src/w32fns.c 2012-07-11 04:31:53 +0000 +++ src/w32fns.c 2012-07-15 14:43:28 +0000 @@ -4072,7 +4072,7 @@ long window_prompting = 0; int width, height; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; Lisp_Object display; struct w32_display_info *dpyinfo = NULL; Lisp_Object parent; @@ -4763,7 +4763,7 @@ HOME directory, then in Emacs etc dir for a file called rgb.txt. */ { Lisp_Object color_file; - struct gcpro gcpro1; + DEFGCPRO1; color_file = build_string ("~/rgb.txt"); @@ -5175,7 +5175,7 @@ long window_prompting = 0; int width, height; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; struct kboard *kb; int face_change_count_before = face_change_count; Lisp_Object buffer; @@ -5519,7 +5519,7 @@ struct buffer *old_buffer; struct text_pos pos; int i, width, height, seen_reversed_p; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; int old_windows_or_buffers_changed = windows_or_buffers_changed; ptrdiff_t count = SPECPDL_INDEX (); @@ -5802,7 +5802,7 @@ { ptrdiff_t count; Lisp_Object deleted, frame, timer; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; /* Return quickly if nothing to do. */ if (NILP (tip_timer) && NILP (tip_frame)) @@ -5923,7 +5923,7 @@ struct frame *f = SELECTED_FRAME (); Lisp_Object file = Qnil; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; + DEFGCPRO6; char filename[MAX_PATH + 1]; char init_dir[MAX_PATH + 1]; int default_filter_index = 1; /* 1: All Files, 2: Directories only */ @@ -6231,7 +6231,7 @@ int vk_code; int lisp_modifiers; int w32_modifiers; - struct gcpro gcpro1; + DEFGCPRO1; CHECK_VECTOR (key); === modified file 'src/w32proc.c' --- src/w32proc.c 2012-06-30 15:55:27 +0000 +++ src/w32proc.c 2012-07-15 14:43:28 +0000 @@ -780,7 +780,7 @@ program = build_string (cmdname); if (NILP (Ffile_executable_p (program))) { - struct gcpro gcpro1; + DEFGCPRO1; full = Qnil; GCPRO1 (program); === modified file 'src/w32uniscribe.c' --- src/w32uniscribe.c 2012-07-05 06:32:41 +0000 +++ src/w32uniscribe.c 2012-07-15 14:43:28 +0000 @@ -645,7 +645,7 @@ HDC context; HFONT check_font, old_font; int i, retval = 0; - struct gcpro gcpro1; + DEFGCPRO1; /* Check the spec is in the right format. */ if (!CONSP (otf_spec) || XINT (Flength (otf_spec)) < 3) === modified file 'src/window.c' --- src/window.c 2012-07-10 16:53:26 +0000 +++ src/window.c 2012-07-15 14:43:28 +0000 @@ -2387,7 +2387,7 @@ Lisp_Object window, windows, best_window, frame_arg; int frame_best_window_flag = 0; struct frame *f; - struct gcpro gcpro1; + DEFGCPRO1; /* If we're only looping through windows on a particular frame, frame points to that frame. If we're looping through windows === modified file 'src/xdisp.c' --- src/xdisp.c 2012-07-13 10:11:37 +0000 +++ src/xdisp.c 2012-07-15 14:43:28 +0000 @@ -2421,10 +2421,10 @@ else { ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (args[0]); - gcpro1.nvars = nargs; + IF_GCPRO (gcpro1.nvars = nargs); specbind (Qinhibit_redisplay, Qt); /* Use Qt to ensure debugger does not run, so there is no possibility of wanting to redisplay. */ @@ -3588,7 +3588,7 @@ else { Lisp_Object fns, fn; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; fns = Qnil; GCPRO2 (val, fns); @@ -4558,7 +4558,7 @@ if (!NILP (form) && !EQ (form, Qt)) { ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1; + DEFGCPRO1; /* Bind `object' to the object having the `display' property, a buffer or string. Bind `position' to the position in the @@ -9242,7 +9242,7 @@ Lisp_Object msg, fmt; char *buffer; ptrdiff_t len; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; USE_SAFE_ALLOCA; /* Do nothing if called asynchronously. Inserting text into @@ -9305,7 +9305,7 @@ ptrdiff_t point_at_end = 0; ptrdiff_t zv_at_end = 0; Lisp_Object old_deactivate_mark, tem; - struct gcpro gcpro1; + DEFGCPRO1; old_deactivate_mark = Vdeactivate_mark; oldbuf = current_buffer; @@ -9577,7 +9577,7 @@ void message3 (Lisp_Object m, ptrdiff_t nbytes, int multibyte) { - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (m); clear_message (1,1); @@ -9729,12 +9729,12 @@ if (FRAME_MESSAGE_BUF (f)) { Lisp_Object args[2], msg; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; args[0] = build_string (m); args[1] = msg = string; GCPRO2 (args[0], msg); - gcpro1.nvars = 2; + IF_GCPRO (gcpro1.nvars = 2); msg = Fformat (2, args); @@ -11085,7 +11085,7 @@ prepare_menu_bars (void) { int all_windows; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; struct frame *f; Lisp_Object tooltip_frame; @@ -11439,7 +11439,7 @@ ptrdiff_t count = SPECPDL_INDEX (); Lisp_Object frame, new_tool_bar; int new_n_tool_bar; - struct gcpro gcpro1; + DEFGCPRO1; /* Set current_buffer to the buffer of the selected window of the frame, so that we get the right local @@ -11502,7 +11502,7 @@ build_desired_tool_bar_string (struct frame *f) { int i, size, size_needed; - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; Lisp_Object image, plist, props; image = plist = props = Qnil; === modified file 'src/xfaces.c' --- src/xfaces.c 2012-07-10 08:43:46 +0000 +++ src/xfaces.c 2012-07-15 14:43:28 +0000 @@ -2356,7 +2356,7 @@ face_name, NAMED_MERGE_POINT_NORMAL, &named_merge_points)) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object from[LFACE_VECTOR_SIZE]; int ok = get_lface_attributes (f, face_name, from, 0, named_merge_points); === modified file 'src/xfns.c' --- src/xfns.c 2012-07-11 04:31:53 +0000 +++ src/xfns.c 2012-07-15 14:43:28 +0000 @@ -1511,7 +1511,7 @@ Lisp_Object coding_system; Lisp_Object encoded_name; Lisp_Object encoded_icon_name; - struct gcpro gcpro1; + DEFGCPRO1; /* As ENCODE_UTF_8 may cause GC and relocation of string data, we use it before x_encode_text that may return string data. */ @@ -3059,7 +3059,7 @@ long window_prompting = 0; int width, height; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; Lisp_Object display; struct x_display_info *dpyinfo = NULL; Lisp_Object parent; @@ -3150,7 +3150,7 @@ to get the color reference counts right, so initialize them! */ { Lisp_Object black; - struct gcpro gcpro1; + DEFGCPRO1; /* Function x_decode_color can signal an error. Make sure to initialize color slots so that we won't try @@ -4314,7 +4314,7 @@ int actual_format; unsigned long actual_size, bytes_remaining; Window target_window = FRAME_X_WINDOW (f); - struct gcpro gcpro1; + DEFGCPRO1; GCPRO1 (prop_value); CHECK_STRING (prop); @@ -4567,7 +4567,7 @@ Lisp_Object name; int width, height; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3; + DEFGCPRO3; int face_change_count_before = face_change_count; Lisp_Object buffer; struct buffer *old_buffer; @@ -4630,7 +4630,7 @@ to get the color reference counts right, so initialize them! */ { Lisp_Object black; - struct gcpro gcpro1; + DEFGCPRO1; /* Function x_decode_color can signal an error. Make sure to initialize color slots so that we won't try @@ -4960,7 +4960,7 @@ struct buffer *old_buffer; struct text_pos pos; int i, width, height, seen_reversed_p; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + DEFGCPRO4; int old_windows_or_buffers_changed = windows_or_buffers_changed; ptrdiff_t count = SPECPDL_INDEX (); @@ -5221,7 +5221,7 @@ { ptrdiff_t count; Lisp_Object deleted, frame, timer; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; /* Return quickly if nothing to do. */ if (NILP (tip_timer) && NILP (tip_frame)) @@ -5362,7 +5362,7 @@ int ac = 0; XmString dir_xmstring, pattern_xmstring; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; + DEFGCPRO6; check_x (); @@ -5531,7 +5531,7 @@ Lisp_Object file = Qnil; Lisp_Object decoded_file; ptrdiff_t count = SPECPDL_INDEX (); - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; + DEFGCPRO6; char *cdef_file; check_x (); @@ -5592,7 +5592,7 @@ Lisp_Object font; Lisp_Object font_param; char *default_name = NULL; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; ptrdiff_t count = SPECPDL_INDEX (); check_x (); === modified file 'src/xselect.c' --- src/xselect.c 2012-07-05 18:35:48 +0000 +++ src/xselect.c 2012-07-15 14:43:28 +0000 @@ -774,7 +774,7 @@ static void x_handle_selection_request (struct input_event *event) { - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; Time local_selection_time; Display *display = SELECTION_EVENT_DISPLAY (event); @@ -892,7 +892,7 @@ Lisp_Object target_symbol, Atom property, int for_multiple, struct x_display_info *dpyinfo) { - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object lisp_selection; struct selection_data *cs; GCPRO1 (lisp_selection); @@ -2028,7 +2028,7 @@ Lisp_Object time_stamp, Lisp_Object terminal) { Lisp_Object val = Qnil; - struct gcpro gcpro1, gcpro2; + DEFGCPRO2; struct frame *f = frame_for_x_selection (terminal); GCPRO2 (target_type, val); /* we store newly consed data into these */ === modified file 'src/xterm.c' --- src/xterm.c 2012-07-10 23:24:36 +0000 +++ src/xterm.c 2012-07-15 14:43:28 +0000 @@ -10126,7 +10126,7 @@ /* Protect terminal from GC before removing it from the list of terminals. */ - struct gcpro gcpro1; + DEFGCPRO1; Lisp_Object gcpro_term; XSETTERMINAL (gcpro_term, terminal); GCPRO1 (gcpro_term);