From: Dmitry Antipov <dmantipov@yandex.ru>
To: Emacs development discussions <emacs-devel@gnu.org>
Subject: [RFC] Omit all GCPRO stuff if GC_MAKE_GCPROS_NOOPS
Date: Sun, 15 Jul 2012 21:34:42 +0400 [thread overview]
Message-ID: <5002FF32.2090308@yandex.ru> (raw)
[-- Attachment #1: Type: text/plain, Size: 102 bytes --]
This patch moves all GCPRO stuff out of compilation if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS.
Dmitry
[-- Attachment #2: gcpro.patch --]
[-- Type: text/plain, Size: 69298 bytes --]
=== 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
\f
/* 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);
next reply other threads:[~2012-07-15 17:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-15 17:34 Dmitry Antipov [this message]
2012-07-16 6:41 ` [RFC] Omit all GCPRO stuff if GC_MAKE_GCPROS_NOOPS Paul Eggert
2012-07-16 12:42 ` Michael Welsh Duggan
2012-07-16 13:39 ` Jan Djärv
2012-07-16 14:14 ` Paul Eggert
2012-07-17 7:20 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5002FF32.2090308@yandex.ru \
--to=dmantipov@yandex.ru \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).