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:
parent
df16e041de
commit
a67a1c41fe
2 changed files with 16 additions and 9 deletions
|
@ -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>
|
2020-07-22 Simon Marchi <simon.marchi@polymtl.ca>
|
||||||
Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
|
Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
|
||||||
|
|
||||||
|
|
|
@ -92,8 +92,7 @@ extern PyTypeObject reggroup_object_type
|
||||||
static void *
|
static void *
|
||||||
gdbpy_register_object_data_init (struct gdbarch *gdbarch)
|
gdbpy_register_object_data_init (struct gdbarch *gdbarch)
|
||||||
{
|
{
|
||||||
std::vector<gdbpy_ref<>> *vec = new (std::vector<gdbpy_ref<>>);
|
return new std::vector<gdbpy_ref<>>;
|
||||||
return (void *) vec;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return a gdb.RegisterGroup object wrapping REGGROUP. The register
|
/* Return a gdb.RegisterGroup object wrapping REGGROUP. The register
|
||||||
|
@ -158,16 +157,17 @@ static gdbpy_ref<>
|
||||||
gdbpy_get_register_descriptor (struct gdbarch *gdbarch,
|
gdbpy_get_register_descriptor (struct gdbarch *gdbarch,
|
||||||
int regnum)
|
int regnum)
|
||||||
{
|
{
|
||||||
auto vec = (std::vector<gdbpy_ref<>> *) gdbarch_data
|
auto &vec
|
||||||
(gdbarch, gdbpy_register_object_data);
|
= *(std::vector<gdbpy_ref<>> *) gdbarch_data (gdbarch,
|
||||||
|
gdbpy_register_object_data);
|
||||||
|
|
||||||
/* Ensure that we have enough entries in the vector. */
|
/* Ensure that we have enough entries in the vector. */
|
||||||
if (vec->size () <= regnum)
|
if (vec.size () <= regnum)
|
||||||
vec->resize ((regnum + 1), nullptr);
|
vec.resize ((regnum + 1), nullptr);
|
||||||
|
|
||||||
/* If we don't already have a descriptor for REGNUM in GDBARCH then
|
/* If we don't already have a descriptor for REGNUM in GDBARCH then
|
||||||
create one now. */
|
create one now. */
|
||||||
if (vec->at (regnum) == nullptr)
|
if (vec[regnum] == nullptr)
|
||||||
{
|
{
|
||||||
gdbpy_ref <register_descriptor_object> reg
|
gdbpy_ref <register_descriptor_object> reg
|
||||||
(PyObject_New (register_descriptor_object,
|
(PyObject_New (register_descriptor_object,
|
||||||
|
@ -176,12 +176,12 @@ gdbpy_get_register_descriptor (struct gdbarch *gdbarch,
|
||||||
return NULL;
|
return NULL;
|
||||||
reg->regnum = regnum;
|
reg->regnum = regnum;
|
||||||
reg->gdbarch = gdbarch;
|
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
|
/* Grab the register descriptor from the vector, the reference count is
|
||||||
automatically incremented thanks to gdbpy_ref. */
|
automatically incremented thanks to gdbpy_ref. */
|
||||||
return vec->at (regnum);
|
return vec[regnum];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert the register descriptor to a string. */
|
/* Convert the register descriptor to a string. */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue