Commit c671ff18 authored by catch's avatar catch
Browse files

Issue #3185768 by alexpott, longwave, Berdir: Optimise container compiler passes for install

parent 76b129c1
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -6,6 +6,11 @@
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderInterface;
use Drupal\Core\Lock\NullLockBackend;
use Symfony\Component\DependencyInjection\Compiler\AnalyzeServiceReferencesPass;
use Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass;
use Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass;
use Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass;
use Symfony\Component\DependencyInjection\Compiler\ResolveHotPathPass;
use Symfony\Component\DependencyInjection\Reference;

/**
@@ -61,6 +66,24 @@ public function register(ContainerBuilder $container) {
        ->addArgument(new Reference('router.builder'))
        ->addTag('event_subscriber');
    }

    $pass_config = $container->getCompilerPassConfig();
    $pass_config->setRemovingPasses(array_filter($pass_config->getRemovingPasses(), function ($pass) {
      // Remove InlineServiceDefinitionsPass, RemoveUnusedDefinitionsPass,
      // AnalyzeServiceReferencesPass and ReplaceAliasByActualDefinitionPass as
      // these are not necessary during installation.
      // @see \Symfony\Component\DependencyInjection\Compiler\PassConfig
      return !($pass instanceof InlineServiceDefinitionsPass ||
               $pass instanceof RemoveUnusedDefinitionsPass ||
               $pass instanceof AnalyzeServiceReferencesPass ||
               $pass instanceof ReplaceAliasByActualDefinitionPass);
    }));
    $pass_config->setAfterRemovingPasses(array_filter($pass_config->getAfterRemovingPasses(), function ($pass) {
      // Remove ResolveHotPathPass as Drupal's container dumper does not support
      // it.
      // @see \Symfony\Component\DependencyInjection\Compiler\PassConfig
      return !($pass instanceof ResolveHotPathPass);
    }));
  }

}