[PATCH 1/2] gdb/python: Reuse gdb.RegisterDescriptor objects where possible

Tom Tromey tom@tromey.com
Mon Jul 13 18:21:41 GMT 2020


>>>>> "Andrew" == Andrew Burgess <andrew.burgess@embecosm.com> writes:

Andrew> 	* python/py-registers.c (gdbpy_register_object_data): New static
Andrew> 	global.
Andrew> 	(gdbpy_register_object_data_init): New function.
Andrew> 	(gdbpy_new_register_descriptor): Renamed to...
Andrew> 	(gdbpy_get_register_descriptor): ...this, and update to reuse
Andrew> 	existing register descriptors where possible.
Andrew> 	(gdbpy_register_descriptor_iter_next): Update.
Andrew> 	(gdbpy_initialize_registers): Register new gdbarch data.

This looks reasonable to me.

Andrew> +static void *
Andrew> +gdbpy_register_object_data_init (struct gdbarch *gdbarch)
Andrew> +{
Andrew> +  std::vector<const register_descriptor_object *> *vec
Andrew> +    = new (std::vector<const register_descriptor_object *>);
Andrew> +  return (void *) vec;

It seems a bit strange to use "const" here, since the refcounts do
change, and the code has to cast away const elsewhere.

Also I wonder if a vector of PyObject* or even gdb_pyref<> would be
better.

Tom


More information about the Gdb-patches mailing list