forked from Imagelibrary/binutils-gdb
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.
This commit is contained in:
@@ -74,7 +74,7 @@ print_flush (void)
|
||||
}
|
||||
|
||||
static void
|
||||
print_exception (struct ui_file *file, struct gdb_exception e)
|
||||
print_exception (struct ui_file *file, const struct gdb_exception &e)
|
||||
{
|
||||
/* KLUGE: cagney/2005-01-13: Write the string out one line at a time
|
||||
as that way the MI's behavior is preserved. */
|
||||
@@ -110,7 +110,7 @@ print_exception (struct ui_file *file, struct gdb_exception e)
|
||||
}
|
||||
|
||||
void
|
||||
exception_print (struct ui_file *file, struct gdb_exception e)
|
||||
exception_print (struct ui_file *file, const struct gdb_exception &e)
|
||||
{
|
||||
if (e.reason < 0 && e.message != NULL)
|
||||
{
|
||||
@@ -120,7 +120,7 @@ exception_print (struct ui_file *file, struct gdb_exception e)
|
||||
}
|
||||
|
||||
void
|
||||
exception_fprintf (struct ui_file *file, struct gdb_exception e,
|
||||
exception_fprintf (struct ui_file *file, const struct gdb_exception &e,
|
||||
const char *prefix, ...)
|
||||
{
|
||||
if (e.reason < 0 && e.message != NULL)
|
||||
@@ -141,7 +141,8 @@ exception_fprintf (struct ui_file *file, struct gdb_exception e,
|
||||
/* See exceptions.h. */
|
||||
|
||||
int
|
||||
exception_print_same (struct gdb_exception e1, struct gdb_exception e2)
|
||||
exception_print_same (const struct gdb_exception &e1,
|
||||
const struct gdb_exception &e2)
|
||||
{
|
||||
const char *msg1 = e1.message == nullptr ? "" : e1.what ();
|
||||
const char *msg2 = e2.message == nullptr ? "" : e2.what ();
|
||||
|
||||
Reference in New Issue
Block a user