Make exception handling more efficient
authorTom Tromey <tromey@adacore.com>
Wed, 24 Apr 2019 12:50:06 +0000 (06:50 -0600)
committerTom Tromey <tromey@adacore.com>
Thu, 25 Apr 2019 18:59:35 +0000 (12:59 -0600)
commit94aeb44b001ab2d632806242a3bacb0a879abe15
treeedff0a78beb11b19021e0679c1168e14c96bd84a
parent680d7fd5fcff860a31021845389d4dfeb7b42e3c
Make exception handling more efficient

This makes exception handling more efficient in a few spots, through
the use of const- and rvalue-references.

I wrote this patch by commenting out the gdb_exception copy
constructor and then examining the resulting error messages one by
one, introducing the use of std::move where appropriate.

gdb/ChangeLog
2019-04-25  Tom Tromey  <tromey@adacore.com>

* xml-support.c (struct gdb_xml_parser) <set_error>: Take an
rvalue reference.
(gdb_xml_start_element_wrapper, gdb_xml_end_element_wrapper)
(gdb_xml_parser::parse): Use std::move.
* python/python-internal.h (gdbpy_convert_exception): Take a const
reference.
* python/py-value.c (valpy_getitem, valpy_nonzero): Use
std::move.
* python/py-utils.c (gdbpy_convert_exception): Take a const
reference.
* python/py-inferior.c (infpy_write_memory, infpy_search_memory):
Use std::move.
* python/py-breakpoint.c (bppy_set_condition, bppy_set_commands):
Use std::move.
* mi/mi-main.c (mi_print_exception): Take a const reference.
* main.c (handle_command_errors): Take a const reference.
* linespec.c (parse_linespec): Use std::move.
* infcall.c (run_inferior_call): Use std::move.
(call_function_by_hand_dummy): Use std::move.
* exec.c (try_open_exec_file): Use std::move.
* exceptions.h (exception_print, exception_fprintf)
(exception_print_same): Update.
* exceptions.c (print_exception, exception_print)
(exception_fprintf, exception_print_same): Change parameters to
const reference.
* event-top.c (gdb_rl_callback_read_char_wrapper): Update.
* common/new-op.c: Use std::move.
* common/common-exceptions.h (struct gdb_exception): Add move
constructor.
(struct gdb_exception_error, struct gdb_exception_quit, struct
gdb_quit_bad_alloc): Change constructor to move constructor.
(throw_exception): Change parameter to rvalue reference.
* common/common-exceptions.c (throw_exception): Take rvalue
reference.
* cli/cli-interp.c (safe_execute_command): Use std::move.
* breakpoint.c (insert_bp_location, location_to_sals): Use
std::move.
20 files changed:
gdb/ChangeLog
gdb/breakpoint.c
gdb/cli/cli-interp.c
gdb/common/common-exceptions.c
gdb/common/common-exceptions.h
gdb/common/new-op.c
gdb/event-top.c
gdb/exceptions.c
gdb/exceptions.h
gdb/exec.c
gdb/infcall.c
gdb/linespec.c
gdb/main.c
gdb/mi/mi-main.c
gdb/python/py-breakpoint.c
gdb/python/py-inferior.c
gdb/python/py-utils.c
gdb/python/py-value.c
gdb/python/python-internal.h
gdb/xml-support.c