| 1262 | } |
| 1263 | |
| 1264 | void DUChain::initialize() |
| 1265 | { |
| 1266 | // Initialize the global item repository as first thing after loading the session |
| 1267 | Q_ASSERT(ICore::self()); |
| 1268 | Q_ASSERT(ICore::self()->activeSession()); |
| 1269 | |
| 1270 | ItemRepositoryRegistry::initialize(repositoryPathForSession(ICore::self()->activeSessionLock())); |
| 1271 | |
| 1272 | initReferenceCounting(); |
| 1273 | |
| 1274 | // This needs to be initialized here too as the function is not threadsafe, but can |
| 1275 | // sometimes be called from different threads. This results in the underlying QFile |
| 1276 | // being 0 and hence crashes at some point later when accessing the contents via |
| 1277 | // read. See https://bugs.kde.org/show_bug.cgi?id=250779 |
| 1278 | RecursiveImportRepository::repository(); |
| 1279 | |
| 1280 | LockedItemRepository::initialize<EnvironmentInformationList>(); |
| 1281 | LockedItemRepository::initialize<EnvironmentInformation>(); |
| 1282 | |
| 1283 | // similar to above, see https://bugs.kde.org/show_bug.cgi?id=255323 |
| 1284 | initDeclarationRepositories(); |
| 1285 | |
| 1286 | initModificationRevisionSetRepository(); |
| 1287 | initIdentifierRepository(); |
| 1288 | initTypeRepository(); |
| 1289 | initInstantiationInformationRepository(); |
| 1290 | |
| 1291 | PersistentSymbolTable::self(); |
| 1292 | Importers::self(); |
| 1293 | CodeModel::self(); |
| 1294 | |
| 1295 | globalImportIdentifier(); |
| 1296 | globalIndexedImportIdentifier(); |
| 1297 | globalAliasIdentifier(); |
| 1298 | globalIndexedAliasIdentifier(); |
| 1299 | } |
| 1300 | |
| 1301 | DUChainLock* DUChain::lock() |
| 1302 | { |