forked from Imagelibrary/binutils-gdb
Eliminate the two-level data structures behind location_specs
Currently, there's the location_spec hierarchy, and then some
location_spec subclasses have their own struct type holding all their
data fields.
I.e., there is this:
location_spec
explicit_location_spec
linespec_location_spec
address_location_spec
probe_location_spec
and then these separate types:
explicit_location
linespec_location
where:
explicit_location_spec
has-a explicit_location
linespec_location_spec
has-a linespec_location
This patch eliminates explicit_location and linespec_location,
inlining their members in the corresponding location_spec type.
The location_spec subclasses were the ones currently defined in
location.c, so they are moved to the header. Since the definitions of
the classes are now visible, we no longer need location_spec_deleter.
Some constructors that are used for cloning location_specs, like:
explicit explicit_location_spec (const struct explicit_location *loc)
... were converted to proper copy ctors.
In the process, initialize_explicit_location is eliminated, and some
functions that returned the "data type behind a locspec", like
get_linespec_location are converted to downcast functions, like
as_linespec_location_spec.
Change-Id: Ia31ccef9382b25a52b00fa878c8df9b8cf2a6c5a
This commit is contained in:
@@ -225,12 +225,9 @@ exception_catchpoint::re_set ()
|
||||
catchpoint mode. */
|
||||
try
|
||||
{
|
||||
struct explicit_location explicit_loc;
|
||||
|
||||
initialize_explicit_location (&explicit_loc);
|
||||
explicit_loc.function_name
|
||||
= ASTRDUP (exception_functions[kind].function);
|
||||
location_spec_up locspec = new_explicit_location_spec (&explicit_loc);
|
||||
location_spec_up locspec
|
||||
= (new_explicit_location_spec_function
|
||||
(exception_functions[kind].function));
|
||||
sals = this->decode_location_spec (locspec.get (), filter_pspace);
|
||||
}
|
||||
catch (const gdb_exception_error &ex)
|
||||
|
||||
Reference in New Issue
Block a user