[cfe-dev] SelectorTable and IdentifierTable
steve naroff
snaroff at apple.com
Tue Jan 20 18:47:21 PST 2009
On Jan 20, 2009, at 6:17 PM, Ted Kremenek wrote:
> On Jan 20, 2009, at 5:53 PM, steve naroff <snaroff at apple.com> wrote:
>
>>
>> On Jan 20, 2009, at 5:23 PM, Ted Kremenek wrote:
>>
>>> Is there a specific reason why we need both IdentifierTable and
>>> SelectorTable? Why not just have IdentifierTable use
>>> SelectorTable as
>>> an internal data structure, and have all selector creation go
>>> through
>>> IdentifierTable? It seems to buy us nothing that have two separate
>>> concepts from the perspective of clients.
>>> ______
>>
>> Hey Ted,
>>
>> What's the benefit of unifying them? (other than removing some API/
>> code).
>>
>> Having two separate table's that model the C/ObjC namespaces may be
>> better from a lookup perspective (fewer hash collisions). There may
>> be some size reduction I imagine (however I believe it would be
>> quite small).
>>
>> Unless you see a performance win, I'm not sure fiddling with this
>> level of clang is important (for now, at least).
>
> I wasn't thinking of combining their lookup tables. That isn't even
> possible; one uses a StringMap and the other a FoldingSet. What I
> was thing was:
>
> 1) Make SelectorTable an internal implementation class of
> IdentifierTable.
>
> 2) Have the getSelector() methods be in IdentifierTable.
>
> 3) Allocate all MultiKeywordSelector objects using the same
> BumpPtrAllocator used by IdentifierTable. Currently these objects
> are being malloc'ed and then always leaked (~SelectorTable doesn't
> free them).
>
Got it (I thought you were talking about combining the lookup tables).
> Conceptually both IdentifierTable and SelectorTable reason about
> identifiers. Why not just have one IdentifierManager?
Since many selectors contain colons, I don't think of them as
identifiers (since C identifiers can't contain colons).
> SelectorTable is basically a shim on top of IdentifierTable anyway.
> Combining the two makes the API a little simpler since clients don't
> have to create yet another book-keeping object that they must
> properly dispose.
I agree. I think combining them makes sense, I just don't see it as a
big win (since not many clients use the SelectorTable API).
snaroff
More information about the cfe-dev
mailing list