From a890ece1d0c498787eae41df8394a243b2adc359 Mon Sep 17 00:00:00 2001 From: ryuukk <44361234+ryuukk@users.noreply.github.com> Date: Wed, 19 Oct 2022 18:33:19 +0200 Subject: [PATCH] Avoid GC allocation --- dsymbol/src/dsymbol/conversion/first.d | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/dsymbol/src/dsymbol/conversion/first.d b/dsymbol/src/dsymbol/conversion/first.d index 6197546..c1e9fce 100644 --- a/dsymbol/src/dsymbol/conversion/first.d +++ b/dsymbol/src/dsymbol/conversion/first.d @@ -366,20 +366,15 @@ final class FirstPass : ASTVisitor currentSymbol = rootSymbol; moduleScope = GCAllocator.instance.make!Scope(0, uint.max); currentScope = moduleScope; - auto objectLocations = cache.resolveImportLocations("object"); - if (objectLocations is null) - warning("Could not locate object.d or object.di"); - else - { - foreach (objectLocation; objectLocations) - { - auto objectImport = allocateSemanticSymbol(IMPORT_SYMBOL_NAME, - CompletionKind.importSymbol, objectLocation); - objectImport.acSymbol.skipOver = true; - currentSymbol.addChild(objectImport, true); - currentScope.addSymbol(objectImport.acSymbol, false); - } - } + auto numResolved = cache.resolveImportLocations("object", (objectLocation) { + auto objectImport = allocateSemanticSymbol(IMPORT_SYMBOL_NAME, + CompletionKind.importSymbol, objectLocation); + objectImport.acSymbol.skipOver = true; + currentSymbol.addChild(objectImport, true); + currentScope.addSymbol(objectImport.acSymbol, false); + }); + if (numResolved == 0) + warning("Could not locate any object.d or object.di"); foreach (s; builtinSymbols[]) currentScope.addSymbol(s, false); mod.accept(this);