Changeset 0633cf2 for src/SymTab
- Timestamp:
- Feb 28, 2019, 5:13:47 PM (5 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:
- 0050a5f
- Parents:
- 5509ff4 (diff), 79de2210 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- src/SymTab
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/Indexer.cc
r5509ff4 r0633cf2 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() ) { -
src/SymTab/ManglerCommon.cc
r5509ff4 r0633cf2 24 24 25 25 // GENERATED START, DO NOT EDIT 26 // GENERATED BY BasicTypes-gen.cc26 // GENERATED BY ../../main/src/BasicTypes-gen.cc 27 27 // NOTES ON MANGLING: 28 28 // * Itanium spec says that Float80 encodes to "e" (like LongDouble), but the distinct lengths cause resolution problems. -
src/SymTab/Validate.cc
r5509ff4 r0633cf2 49 49 #include "CodeGen/OperatorTable.h" // for isCtorDtor, isCtorDtorAssign 50 50 #include "ControlStruct/Mutate.h" // for ForExprMutator 51 #include "Common/Stats.h" // for Stats::Heap 51 52 #include "Common/PassVisitor.h" // for PassVisitor, WithDeclsToAdd 52 53 #include "Common/ScopedMap.h" // for ScopedMap … … 303 304 PassVisitor<FixQualifiedTypes> fixQual; 304 305 306 Stats::Heap::newPass("validate-A"); 305 307 acceptAll( translationUnit, hoistDecls ); 306 308 ReplaceTypedef::replaceTypedef( translationUnit ); 307 309 ReturnTypeFixer::fix( translationUnit ); // must happen before autogen 308 310 acceptAll( translationUnit, epc ); // must happen before VerifyCtorDtorAssign, because void return objects should not exist; before LinkReferenceToTypes because it is an indexer and needs correct types for mangling 311 Stats::Heap::newPass("validate-B"); 309 312 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions 310 313 mutateAll( translationUnit, fixQual ); // must happen after LinkReferenceToTypes, because aggregate members are accessed 311 314 HoistStruct::hoistStruct( translationUnit ); // must happen after EliminateTypedef, so that aggregate typedefs occur in the correct order 312 315 EliminateTypedef::eliminateTypedef( translationUnit ); // 316 Stats::Heap::newPass("validate-C"); 313 317 acceptAll( translationUnit, genericParams ); // check as early as possible - can't happen before LinkReferenceToTypes 314 318 VerifyCtorDtorAssign::verify( translationUnit ); // must happen before autogen, because autogen examines existing ctor/dtors 315 319 ReturnChecker::checkFunctionReturns( translationUnit ); 316 320 InitTweak::fixReturnStatements( translationUnit ); // must happen before autogen 321 Stats::Heap::newPass("validate-D"); 317 322 Concurrency::applyKeywords( translationUnit ); 318 323 acceptAll( translationUnit, fpd ); // must happen before autogenerateRoutines, after Concurrency::applyKeywords because uniqueIds must be set on declaration before resolution 319 324 ControlStruct::hoistControlDecls( translationUnit ); // hoist initialization out of for statements; must happen before autogenerateRoutines 320 325 autogenerateRoutines( translationUnit ); // moved up, used to be below compoundLiteral - currently needs EnumAndPointerDecay 326 Stats::Heap::newPass("validate-E"); 321 327 Concurrency::implementMutexFuncs( translationUnit ); 322 328 Concurrency::implementThreadStarter( translationUnit ); 323 329 mutateAll( translationUnit, compoundliteral ); 324 330 ResolvExpr::resolveWithExprs( translationUnit ); // must happen before FixObjectType because user-code is resolved and may contain with variables 331 Stats::Heap::newPass("validate-F"); 325 332 FixObjectType::fix( translationUnit ); 326 333 ArrayLength::computeLength( translationUnit ); -
src/SymTab/module.mk
r5509ff4 r0633cf2 15 15 ############################################################################### 16 16 17 SRC += SymTab/Indexer.cc \ 18 SymTab/Mangler.cc \ 19 SymTab/ManglerCommon.cc \ 20 SymTab/Validate.cc \ 21 SymTab/FixFunction.cc \ 22 SymTab/Autogen.cc 17 SRC_SYMTAB = \ 18 SymTab/Autogen.cc \ 19 SymTab/FixFunction.cc \ 20 SymTab/Indexer.cc \ 21 SymTab/Mangler.cc \ 22 SymTab/ManglerCommon.cc \ 23 SymTab/Validate.cc 24 25 SRC += $(SRC_SYMTAB) 26 SRCDEMANGLE += $(SRC_SYMTAB) SymTab/Demangle.cc
Note: See TracChangeset
for help on using the changeset viewer.