gdb/python: Use reference not pointer in py-registers.c

Pedro's review comments arrived after I'd already committed this
change:

  commit f7306dac19
  Date:   Tue Jul 7 15:00:30 2020 +0100

      gdb/python: Reuse gdb.RegisterDescriptor objects where possible

See:

  https://sourceware.org/pipermail/gdb-patches/2020-July/170726.html

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* python/py-registers.c (gdbpy_register_object_data_init): Remove
	redundant local variable.
	(gdbpy_get_register_descriptor): Extract descriptor vector as a
	reference, not pointer, update code accordingly.
This commit is contained in:
Andrew Burgess 2020-07-22 14:57:55 +01:00
parent df16e041de
commit a67a1c41fe
2 changed files with 16 additions and 9 deletions

View File

@ -1,3 +1,10 @@
2020-07-22 Andrew Burgess <andrew.burgess@embecosm.com>
* python/py-registers.c (gdbpy_register_object_data_init): Remove
redundant local variable.
(gdbpy_get_register_descriptor): Extract descriptor vector as a
reference, not pointer, update code accordingly.
2020-07-22 Simon Marchi <simon.marchi@polymtl.ca>
Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>

View File

@ -92,8 +92,7 @@ extern PyTypeObject reggroup_object_type
static void *
gdbpy_register_object_data_init (struct gdbarch *gdbarch)
{
std::vector<gdbpy_ref<>> *vec = new (std::vector<gdbpy_ref<>>);
return (void *) vec;
return new std::vector<gdbpy_ref<>>;
}
/* Return a gdb.RegisterGroup object wrapping REGGROUP. The register
@ -158,16 +157,17 @@ static gdbpy_ref<>
gdbpy_get_register_descriptor (struct gdbarch *gdbarch,
int regnum)
{
auto vec = (std::vector<gdbpy_ref<>> *) gdbarch_data
(gdbarch, gdbpy_register_object_data);
auto &vec
= *(std::vector<gdbpy_ref<>> *) gdbarch_data (gdbarch,
gdbpy_register_object_data);
/* Ensure that we have enough entries in the vector. */
if (vec->size () <= regnum)
vec->resize ((regnum + 1), nullptr);
if (vec.size () <= regnum)
vec.resize ((regnum + 1), nullptr);
/* If we don't already have a descriptor for REGNUM in GDBARCH then
create one now. */
if (vec->at (regnum) == nullptr)
if (vec[regnum] == nullptr)
{
gdbpy_ref <register_descriptor_object> reg
(PyObject_New (register_descriptor_object,
@ -176,12 +176,12 @@ gdbpy_get_register_descriptor (struct gdbarch *gdbarch,
return NULL;
reg->regnum = regnum;
reg->gdbarch = gdbarch;
vec->at (regnum) = gdbpy_ref<> ((PyObject *) reg.release ());
vec[regnum] = gdbpy_ref<> ((PyObject *) reg.release ());
}
/* Grab the register descriptor from the vector, the reference count is
automatically incremented thanks to gdbpy_ref. */
return vec->at (regnum);
return vec[regnum];
}
/* Convert the register descriptor to a string. */