Currently (8.2.1), SymtabAPI aggregates represent a collection of
symbols at the same offset, with access to uniqified vectors of names
via const-ref. This is less than optimal from a storage perspective, and
allows some funny inconsistencies--adding a name will sometimes, but not
always, add a symbol to an aggregate, for instance.
For 9.x, we are planning to remove these accessors (get*Names) and
replace them with range accessors (get_*_names_begin, get_*_names_end);
we are further planning on a slight change to the semantics of add*Name,
such that it will check the existing (pretty/mangled/typed) names for
duplication, but if it's a new name, will always add a corresponding symbol.
These changes will only affect users who use Symtab's name access and
modification methods directly on Aggregates/Functions/Variables; the
interfaces of other components are untouched.
Feedback on these changes is welcome, though we want to ensure that we
keep the memory gains we've made by not having aggregates maintain their
own name collections.
--bw
Bill Williams
Paradyn Project
bill@xxxxxxxxxxx
|