diff --git a/dsymbol/src/dsymbol/modulecache.d b/dsymbol/src/dsymbol/modulecache.d index ca1ba9f..492d205 100644 --- a/dsymbol/src/dsymbol/modulecache.d +++ b/dsymbol/src/dsymbol/modulecache.d @@ -149,6 +149,7 @@ struct ModuleCache DSymbol* cacheModule(string location) { import std.stdio : File; + import core.memory: GC; assert (location !is null); @@ -160,6 +161,8 @@ struct ModuleCache if (!needsReparsing(cachedLocation)) return getEntryFor(cachedLocation).symbol; + scope(exit) GC.collect(); + recursionGuard.insert(&cachedLocation.data[0]); File f = File(cachedLocation); diff --git a/src/dcd/server/autocomplete/complete.d b/src/dcd/server/autocomplete/complete.d index 6622890..32d3233 100644 --- a/src/dcd/server/autocomplete/complete.d +++ b/src/dcd/server/autocomplete/complete.d @@ -65,6 +65,9 @@ enum CalltipHint { public AutocompleteResponse complete(const AutocompleteRequest request, ref ModuleCache moduleCache) { + import core.memory: GC; + scope(exit) GC.collect(); + const(Token)[] tokenArray; auto stringCache = StringCache(request.sourceCode.length.optimalBucketCount); auto beforeTokens = getTokensBeforeCursor(request.sourceCode,