This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

src/gdb ChangeLog ada-lang.c


CVSROOT:	/cvs/src
Module name:	src
Changes by:	brobecke@sourceware.org	2010-05-28 01:32:09

Modified files:
	gdb            : ChangeLog ada-lang.c 

Log message:
	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.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.11853&r2=1.11854
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ada-lang.c.diff?cvsroot=src&r1=1.264&r2=1.265


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]