/// \brief The number of macros de-serialized from the PCH file.
unsigned NumMacrosRead;
+ /// \brief The total number of macros stored in the PCH file.
+ unsigned TotalNumMacros;
+
/// \brief The number of selectors that have been read.
unsigned NumSelectorsRead;
- /// \brief The number of times we have looked into the selector table
- /// and not found anything.
- unsigned NumSelectorMisses;
+ /// \brief The number of method pool entries that have been read.
+ unsigned NumMethodPoolEntriesRead;
- /// \brief The total number of macros stored in the PCH file.
- unsigned TotalNumMacros;
+ /// \brief The number of times we have looked up a selector in the method
+ /// pool and not found anything interesting.
+ unsigned NumMethodPoolMisses;
+
+ /// \brief The total number of method pool entries in the selector table.
+ unsigned TotalNumMethodPoolEntries;
/// Number of lexical decl contexts read/total.
unsigned NumLexicalDeclContextsRead, TotalLexicalDeclContexts;
Consumer(0), isysroot(isysroot), DisableValidation(DisableValidation),
NumStatHits(0), NumStatMisses(0), NumSLocEntriesRead(0),
TotalNumSLocEntries(0), NumStatementsRead(0), TotalNumStatements(0),
- NumMacrosRead(0), NumSelectorsRead(0), NumSelectorMisses(0),
- TotalNumMacros(0), NumLexicalDeclContextsRead(0),
+ NumMacrosRead(0), TotalNumMacros(0), NumSelectorsRead(0),
+ NumMethodPoolEntriesRead(0), NumMethodPoolMisses(0),
+ TotalNumMethodPoolEntries(0), NumLexicalDeclContextsRead(0),
TotalLexicalDeclContexts(0), NumVisibleDeclContextsRead(0),
TotalVisibleDeclContexts(0), NumCurrentElementsDeserializing(0) {
RelocatablePCH = false;
isysroot(isysroot), DisableValidation(DisableValidation), NumStatHits(0),
NumStatMisses(0), NumSLocEntriesRead(0), TotalNumSLocEntries(0),
NumStatementsRead(0), TotalNumStatements(0), NumMacrosRead(0),
- NumSelectorsRead(0), NumSelectorMisses(0), TotalNumMacros(0),
+ TotalNumMacros(0), NumSelectorsRead(0), NumMethodPoolEntriesRead(0),
+ NumMethodPoolMisses(0), TotalNumMethodPoolEntries(0),
NumLexicalDeclContextsRead(0), TotalLexicalDeclContexts(0),
NumVisibleDeclContextsRead(0), TotalVisibleDeclContexts(0),
NumCurrentElementsDeserializing(0) {
F.SelectorLookupTableData + Record[0],
F.SelectorLookupTableData,
PCHSelectorLookupTrait(*this));
+ TotalNumMethodPoolEntries += Record[1];
break;
case pch::REFERENCED_SELECTOR_POOL: {
NumVisibleDeclContextsRead, TotalVisibleDeclContexts,
((float)NumVisibleDeclContextsRead/TotalVisibleDeclContexts
* 100));
-#if 0
- if (TotalSelectorsInSelector) {
+ if (TotalNumMethodPoolEntries) {
std::fprintf(stderr, " %u/%u method pool entries read (%f%%)\n",
- NumSelectorSelectorsRead, TotalSelectorsInSelector,
- ((float)NumSelectorSelectorsRead/TotalSelectorsInSelector
+ NumMethodPoolEntriesRead, TotalNumMethodPoolEntries,
+ ((float)NumMethodPoolEntriesRead/TotalNumMethodPoolEntries
* 100));
- std::fprintf(stderr, " %u method pool misses\n", NumSelectorMisses);
+ std::fprintf(stderr, " %u method pool misses\n", NumMethodPoolMisses);
}
-#endif
std::fprintf(stderr, "\n");
}
PCHSelectorLookupTable::iterator Pos = PoolTable->find(Sel);
if (Pos != PoolTable->end()) {
++NumSelectorsRead;
+ // FIXME: Not quite happy with the statistics here. We probably should
+ // disable this tracking when called via LoadSelector.
+ // Also, should entries without methods count as misses?
+ ++NumMethodPoolEntriesRead;
PCHSelectorLookupTrait::data_type Data = *Pos;
if (DeserializationListener)
DeserializationListener->SelectorRead(Data.ID, Sel);
}
}
- ++NumSelectorMisses;
+ ++NumMethodPoolMisses;
return std::pair<ObjCMethodList, ObjCMethodList>();
}