Use unlocked I/O for a minor performance improvement on hosts like

GNU/Linux and Solaris that support unlocked I/O.  The basic idea
is to use the gnlib unlocked-io module, and to prefer putc and
puts to printf when either will work (since the latter doesn't
come in an unlocked flavor).
* bootstrap (gnulib_modules): Add unlocked-io.
* data/c.m4 (yysymprint): Prefer puts and putc to printf.
* data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): New macros.
Prefer them to YYFPRINTF and YYDPRINTF if either will do,
and similarly for puts and putc and printf.
* data/yacc.c: Likewise.
* lib/bitset.c (bitset_print): Likewise.
* lib/bitset.h [USE_UNLOCKED_IO]: Include unlocked-io.h.
* lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer putc and puts
to printf.
* lib/lbitset.c (debug_lbitset): Likewise.
* src/closure.c (print_firsts, print_fderives): Likewise.
* src/gram.c (grammar_dump): Likewise.
* src/lalr.c (look_ahead_tokens_print): Likewise.
* src/output.c (escaped_output): Likewise.
(user_actions_output): Coalesce two printfs.
* src/parse-gram.h (%printer): Prefer putc and puts to printf.
* src/reduce.c (reduce_print): Likewise.
* src/state.c (state_rule_look_ahead_tokens_print): Likewise.
* src/system.h: Include unlocked-io.h rathe than stdio.h.
This commit is contained in:
Paul Eggert
2005-10-02 21:24:12 +00:00
parent edb8f44f06
commit fb9c0b3360
17 changed files with 118 additions and 60 deletions

View File

@@ -119,7 +119,7 @@ static void
escaped_output (FILE *out, char const *string)
{
char const *p;
fprintf (out, "[[");
fputs ("[[", out);
for (p = quotearg_style (c_quoting_style, string); *p; p++)
switch (*p)
@@ -131,7 +131,7 @@ escaped_output (FILE *out, char const *string)
default: fputc (*p, out); break;
}
fprintf (out, "]]");
fputs ("]]", out);
}
@@ -302,8 +302,7 @@ user_actions_output (FILE *out)
fprintf (out, "]b4_syncline(%d, ",
rules[r].action_location.start.line);
escaped_output (out, rules[r].action_location.start.file);
fprintf (out, ")[\n");
fprintf (out, " %s\n break;\n\n",
fprintf (out, ")[\n %s\n break;\n\n",
rules[r].action);
}
fputs ("]])\n\n", out);