Changeset 79de2210 for src/SymTab
- Timestamp:
- Feb 28, 2019, 4:23:52 PM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- 0633cf2, 8e70823
- Parents:
- 351c519
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/SymTab/Indexer.cc ¶
r351c519 r79de2210 26 26 #include "Common/SemanticError.h" // for SemanticError 27 27 #include "Common/utility.h" // for cloneAll 28 #include "Common/Stats/Counter.h" // for counters 28 29 #include "GenPoly/GenPoly.h" 29 30 #include "InitTweak/InitTweak.h" // for isConstructor, isCopyFunction, isC... … … 41 42 42 43 namespace SymTab { 44 45 // Statistics block 46 namespace { 47 auto idtable_group = new Stats::Counters::CounterGroup("IdTable"); 48 auto idtable_find = new Stats::Counters::SimpleCounter("Find calls", idtable_group); 49 auto idtable_size = new Stats::Counters::AverageCounter<double>("Average Size", idtable_group); 50 auto idtable_key = new Stats::Counters::AverageCounter<double>("Average Key Size", idtable_group); 51 52 auto indexers_group = new Stats::Counters::CounterGroup("Indexers"); 53 auto indexers_count = new Stats::Counters::SimpleCounter("Count", indexers_group); 54 auto indexers_size = new Stats::Counters::AverageCounter<double>("Average Size", indexers_group); 55 auto indexers_depth_a = new Stats::Counters::AverageCounter<double>("Average Depth", indexers_group); 56 auto indexers_depth_m = new Stats::Counters::MaxCounter<size_t>("Max Depth", indexers_group); 57 } 58 43 59 std::ostream & operator<<( std::ostream & out, const Indexer::IdData & data ) { 44 60 return out << "(" << data.id << "," << data.baseExpr << ")"; … … 197 213 } 198 214 199 Indexer::Indexer() : tables( 0 ), scope( 0 ) {} 200 201 Indexer::Indexer( const Indexer &that ) : doDebug( that.doDebug ), tables( newRef( that.tables ) ), scope( that.scope ) {} 215 Indexer::Indexer() : tables( 0 ), scope( 0 ) { 216 (*indexers_count)++; 217 } 218 219 Indexer::Indexer( const Indexer &that ) : doDebug( that.doDebug ), tables( newRef( that.tables ) ), scope( that.scope ) { 220 (*indexers_count)++; 221 } 202 222 203 223 Indexer::Indexer( Indexer &&that ) : doDebug( that.doDebug ), tables( that.tables ), scope( that.scope ) { … … 206 226 207 227 Indexer::~Indexer() { 228 if(tables) { 229 indexers_size->push( tables->idTable.size() ); 230 size_t depth = 1; 231 for( auto crnt = tables->base.tables; crnt; crnt = crnt->base.tables ) { 232 ++depth; 233 } 234 indexers_depth_a->push( depth ); 235 indexers_depth_m->push( depth ); 236 } 208 237 deleteRef( tables ); 209 238 } … … 237 266 while ( searchTables ) { 238 267 268 (*idtable_find)++; 269 idtable_key->push( id.size() ); 270 idtable_size->push( searchTables->idTable.size() ); 239 271 IdTable::const_iterator decls = searchTables->idTable.find( id ); 240 272 if ( decls != searchTables->idTable.end() ) { … … 313 345 if ( tables->scope < scope ) return nullptr; 314 346 347 (*idtable_find)++; 348 idtable_key->push( id.size() ); 349 idtable_size->push( tables->idTable.size() ); 315 350 IdTable::const_iterator decls = tables->idTable.find( id ); 316 351 if ( decls != tables->idTable.end() ) { … … 331 366 if ( tables->scope < scope ) return false; 332 367 368 (*idtable_find)++; 369 idtable_key->push( id.size() ); 370 idtable_size->push( tables->idTable.size() ); 333 371 IdTable::const_iterator decls = tables->idTable.find( id ); 334 372 if ( decls != tables->idTable.end() ) { … … 347 385 if ( tables->scope < scope ) return false; 348 386 387 (*idtable_find)++; 388 idtable_key->push( id.size() ); 389 idtable_size->push( tables->idTable.size() ); 349 390 IdTable::const_iterator decls = tables->idTable.find( id ); 350 391 if ( decls != tables->idTable.end() ) {
Note: See TracChangeset
for help on using the changeset viewer.