diff options
| author | Paul Eggert <eggert@cs.ucla.edu> | 2019-07-08 17:50:39 -0700 |
|---|---|---|
| committer | Paul Eggert <eggert@cs.ucla.edu> | 2019-07-08 17:50:39 -0700 |
| commit | f8ab90839fe64b2ec8b398a50e8fb4f33e8e95e1 (patch) | |
| tree | c3909d7ae6d78c78cc9e293c20cd764f49931bc2 /src/regex-emacs.c | |
| parent | 7b70efb740a04517e2764b0986c6e92305c1dd3e (diff) | |
| download | emacs-f8ab90839fe64b2ec8b398a50e8fb4f33e8e95e1.tar.gz | |
Use fewer locks when accessing stdio
* src/alloc.c, src/bidi.c, src/emacs-module.c, src/pdumper.c:
* src/regex-emacs.c, src/unexhp9k800.c, src/unexmacosx.c:
* src/widget.c, src/xdisp.c, src/xselect.c, src/xterm.c:
Include sysstdio.h instead of stdio.h, to avoid locking
stdio streams in many cases.
* src/alloc.c (test_setjmp):
* src/bidi.c (bidi_dump_cached_states):
* src/cm.c (calccost):
* src/dispnew.c (init_display_interactive):
* src/emacs.c (main):
* src/image.c (convert_mono_to_color_image):
* src/minibuf.c (read_minibuf_noninteractive):
* src/nsfont.m (ns_descriptor_to_entity)
(ns_dump_glyphstring):
* src/nsterm.h (NSTRACE_MSG_NO_DASHES):
* src/nsterm.m (ns_mouse_position)
(sendEvent:, keyDown:, performDragOperation:):
* src/pdumper.c (dump_fingerprint, print_paths_to_root_1):
* src/print.c (debug_print):
* src/regex-emacs.c (debug_putchar, print_fastmap)
(print_partial_compiled_pattern, print_compiled_pattern)
(print_double_string, regex_compile):
* src/term.c (vfatal):
* src/unexhp9k800.c (read_header):
* src/unexmacosx.c (unexec_error):
* src/widget.c (EmacsFrameInitialize):
* src/xdisp.c (message_to_stderr, vmessage, dump_glyph_row)
(Fdump_glyph_matrix, Fdump_frame_glyph_matrix, dump_glyph_string):
* src/xfaces.c (Fdump_colors, Fdump_face):
* src/xselect.c (x_clipboard_manager_error_2):
* src/xterm.c (x_initialize):
* src/xwidget.c (WEBKIT_FN_INIT):
Prefer unlocked calls like fputs to locked calls like fprintf.
* src/charset.c (read_hex):
* src/cm.c (cmputc, cmcheckmagic):
* src/dispnew.c (update_frame, update_frame_with_menu)
(update_frame_1, Fsend_string_to_terminal, Fding)
(bitch_at_user):
* src/emacs.c (main, Fdump_emacs):
* src/emacs-module.c (module_abort):
* src/fileio.c (Fdo_auto_save):
* src/image.c (slurp_file)
(png_read_from_file, png_load_body, our_stdio_fill_input_buffer):
* src/keyboard.c (record_char, kbd_buffer_get_event)
(handle_interrupt):
* src/lread.c (readbyte_from_stdio, read1):
* src/minibuf.c (read_minibuf_noninteractive):
* src/print.c (printchar_to_stream, strout)
(Fredirect_debugging_output):
* src/sysdep.c (reset_sys_modes, close_output_streams)
(procfs_ttyname, procfs_get_total_memory):
* src/term.c (tty_ring_bell, tty_send_additional_strings)
(tty_set_terminal_modes, tty_reset_terminal_modes)
(tty_update_end, tty_clear_end_of_line, tty_write_glyphs)
(tty_write_glyphs_with_face, tty_insert_glyphs)
(tty_menu_activate):
* src/xfaces.c (Fx_load_color_file):
Simplify by using ordinary calls like putc to explicitly-unlocked
calls like putc_unlocked, since the ordinary calls are now
unlocked anyway.
* src/emacs.c (main, Fdump_emacs):
* src/pdumper.c (Fdump_emacs_portable):
Coalesce adjacent printfs.
* src/nsterm.h: Include sysstdio.h as this file’s macros rely on it.
* src/regex-emacs.c (print_compiled_pattern):
Omit redundant fflush.
* src/sysstdio.h: Include unlocked-io.h.
(clearerr_unlocked, feof_unlocked, ferror_unlocked)
(fflush_unlocked, fgets_unlocked, fputc_unlocked)
(fputs_unlocked, fread_unlocked, fwrite_unlocked)
(getc_unlocked, getchar_unlocked, putc_unlocked)
(putchar_unlocked): Remove these macros; now done by unlocked-io.h.
* src/xwidget.c: Include sysstdio.h.
Diffstat (limited to 'src/regex-emacs.c')
| -rw-r--r-- | src/regex-emacs.c | 65 |
1 files changed, 32 insertions, 33 deletions
diff --git a/src/regex-emacs.c b/src/regex-emacs.c index ac9f91dacbc..bf2ad072f56 100644 --- a/src/regex-emacs.c +++ b/src/regex-emacs.c @@ -436,7 +436,7 @@ extract_number_and_incr (re_char **source) #ifdef REGEX_EMACS_DEBUG /* Use standard I/O for debugging. */ -# include <stdio.h> +# include "sysstdio.h" static int regex_emacs_debug = -100000; @@ -453,7 +453,7 @@ static void debug_putchar (int c) { if (c >= 32 && c <= 126) - fputc (c, stderr); + putc (c, stderr); else { unsigned int uc = c; @@ -482,12 +482,12 @@ print_fastmap (char *fastmap) } if (was_a_range) { - fprintf (stderr, "-"); + debug_putchar ('-'); debug_putchar (i - 1); } } } - fputc ('\n', stderr); + putc ('\n', stderr); } @@ -503,7 +503,7 @@ print_partial_compiled_pattern (re_char *start, re_char *end) if (start == NULL) { - fprintf (stderr, "(null)\n"); + fputs ("(null)\n", stderr); return; } @@ -515,11 +515,11 @@ print_partial_compiled_pattern (re_char *start, re_char *end) switch ((re_opcode_t) *p++) { case no_op: - fprintf (stderr, "/no_op"); + fputs ("/no_op", stderr); break; case succeed: - fprintf (stderr, "/succeed"); + fputs ("/succeed", stderr); break; case exactn: @@ -527,7 +527,7 @@ print_partial_compiled_pattern (re_char *start, re_char *end) fprintf (stderr, "/exactn/%d", mcnt); do { - fprintf (stderr, "/"); + debug_putchar ('/'); debug_putchar (*p++); } while (--mcnt); @@ -546,7 +546,7 @@ print_partial_compiled_pattern (re_char *start, re_char *end) break; case anychar: - fprintf (stderr, "/anychar"); + fputs ("/anychar", stderr); break; case charset: @@ -561,7 +561,7 @@ print_partial_compiled_pattern (re_char *start, re_char *end) (re_opcode_t) *(p - 1) == charset_not ? "^" : ""); if (p + *p >= pend) - fprintf (stderr, " !extends past end of pattern! "); + fputs (" !extends past end of pattern! ", stderr); for (c = 0; c < 256; c++) if (c / 8 < length @@ -570,7 +570,7 @@ print_partial_compiled_pattern (re_char *start, re_char *end) /* Are we starting a range? */ if (last + 1 == c && ! in_range) { - fprintf (stderr, "-"); + debug_putchar ('-'); in_range = true; } /* Have we broken a range? */ @@ -589,14 +589,14 @@ print_partial_compiled_pattern (re_char *start, re_char *end) if (in_range) debug_putchar (last); - fprintf (stderr, "]"); + debug_putchar (']'); p += 1 + length; if (has_range_table) { int count; - fprintf (stderr, "has-range-table"); + fputs ("has-range-table", stderr); /* ??? Should print the range table; for now, just skip it. */ p += 2; /* skip range table bits */ @@ -607,11 +607,11 @@ print_partial_compiled_pattern (re_char *start, re_char *end) break; case begline: - fprintf (stderr, "/begline"); + fputs ("/begline", stderr); break; case endline: - fprintf (stderr, "/endline"); + fputs ("/endline", stderr); break; case on_failure_jump: @@ -670,70 +670,70 @@ print_partial_compiled_pattern (re_char *start, re_char *end) break; case wordbound: - fprintf (stderr, "/wordbound"); + fputs ("/wordbound", stderr); break; case notwordbound: - fprintf (stderr, "/notwordbound"); + fputs ("/notwordbound", stderr); break; case wordbeg: - fprintf (stderr, "/wordbeg"); + fputs ("/wordbeg", stderr); break; case wordend: - fprintf (stderr, "/wordend"); + fputs ("/wordend", stderr); break; case symbeg: - fprintf (stderr, "/symbeg"); + fputs ("/symbeg", stderr); break; case symend: - fprintf (stderr, "/symend"); + fputs ("/symend", stderr); break; case syntaxspec: - fprintf (stderr, "/syntaxspec"); + fputs ("/syntaxspec", stderr); mcnt = *p++; fprintf (stderr, "/%d", mcnt); break; case notsyntaxspec: - fprintf (stderr, "/notsyntaxspec"); + fputs ("/notsyntaxspec", stderr); mcnt = *p++; fprintf (stderr, "/%d", mcnt); break; case at_dot: - fprintf (stderr, "/at_dot"); + fputs ("/at_dot", stderr); break; case categoryspec: - fprintf (stderr, "/categoryspec"); + fputs ("/categoryspec", stderr); mcnt = *p++; fprintf (stderr, "/%d", mcnt); break; case notcategoryspec: - fprintf (stderr, "/notcategoryspec"); + fputs ("/notcategoryspec", stderr); mcnt = *p++; fprintf (stderr, "/%d", mcnt); break; case begbuf: - fprintf (stderr, "/begbuf"); + fputs ("/begbuf", stderr); break; case endbuf: - fprintf (stderr, "/endbuf"); + fputs ("/endbuf", stderr); break; default: fprintf (stderr, "?%d", *(p-1)); } - fprintf (stderr, "\n"); + putc ('\n', stderr); } fprintf (stderr, "%td:\tend of pattern.\n", p - start); @@ -751,14 +751,13 @@ print_compiled_pattern (struct re_pattern_buffer *bufp) if (bufp->fastmap_accurate && bufp->fastmap) { - fprintf (stderr, "fastmap: "); + fputs ("fastmap: ", stderr); print_fastmap (bufp->fastmap); } fprintf (stderr, "re_nsub: %td\t", bufp->re_nsub); fprintf (stderr, "regs_alloc: %d\t", bufp->regs_allocated); fprintf (stderr, "can_be_null: %d\n", bufp->can_be_null); - fflush (stderr); /* Perhaps we should print the translate table? */ } @@ -768,7 +767,7 @@ print_double_string (re_char *where, re_char *string1, ptrdiff_t size1, re_char *string2, ptrdiff_t size2) { if (where == NULL) - fprintf (stderr, "(null)"); + fputs ("(null)", stderr); else { int i; @@ -1751,7 +1750,7 @@ regex_compile (re_char *pattern, ptrdiff_t size, { for (ptrdiff_t debug_count = 0; debug_count < size; debug_count++) debug_putchar (pattern[debug_count]); - fputc ('\n', stderr); + putc ('\n', stderr); } #endif |
