aboutsummaryrefslogtreecommitdiff
path: root/bfd/vms-misc.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2010-05-28 01:32:08 +0000
committerJoel Brobecker <brobecker@gnat.com>2010-05-28 01:32:08 +0000
commite802dbe04fefcc694efa1ae0c26effc830841a96 (patch)
tree40526585f6ee2456dcfcef56e8ae4239060bd5af /bfd/vms-misc.c
parente15a9a5e1c53753e796aef73051f753e682df522 (diff)
downloadgdb-e802dbe04fefcc694efa1ae0c26effc830841a96.zip
gdb-e802dbe04fefcc694efa1ae0c26effc830841a96.tar.gz
gdb-e802dbe04fefcc694efa1ae0c26effc830841a96.tar.bz2
Cache the TSD type in inferior-data (performance).
This is something I noticed while looking at ada_find_any_type. Use of that function is expensive, since it causes a global lookup. Reviewing some of the uses, I found that we were calling it to get a specific type everytime we print a tagged type (the equivalent of classes in C++); and not only that, we did it 4 times [1]! Since the type in question (ada__tags__type_specific_data) is guarantied to remain the same througout the entire life of the inferior, the solution was to cache that type in inferior private data. This patch creates an ada-land private-data area, and uses it to store that type after the first time we look it up. [1]: The problem is mitigated in AdaCore's tree because we use an Ada symbol cache which we are thinking of contributing to the FSF tree. But that's still pretty bad, regardless. 2010-05-27 Joel Brobecker <brobecker@adacore.com> * ada-lang.c (ada_inferior_data): New struct. (ada_inferior_data): New static global. (ada_inferior_data_cleanup, get_ada_inferior_data, ada_inferior_exit) (ada_get_tsd_type): New functions. (ada_tag_name_2): Use ada_get_tsd_type instead of ada_find_any_type to look the tsd type up. (_initialize_ada_language): Attach ada_inferior_exit to inferior_exit event. Set ada_inferior_data.
Diffstat (limited to 'bfd/vms-misc.c')
0 files changed, 0 insertions, 0 deletions