diff --git a/core/core.services.yml b/core/core.services.yml
index 677086f..a5a5b20 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -537,7 +537,7 @@ services:
     arguments: ['@state']
   router.builder:
     class: Drupal\Core\Routing\RouteBuilder
-    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@router.builder_indicator']
+    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@router.builder_indicator', '@access_manager']
   router.rebuild_subscriber:
     class: Drupal\Core\EventSubscriber\RouterRebuildSubscriber
     arguments: ['@router.builder']
@@ -702,11 +702,6 @@ services:
     calls:
       - [setContainer, ['@service_container']]
     public: false
-  access_route_subscriber:
-    class: Drupal\Core\EventSubscriber\AccessRouteSubscriber
-    tags:
-      - { name: event_subscriber }
-    arguments: ['@access_manager.check_provider']
   access_check.default:
     class: Drupal\Core\Access\DefaultAccessCheck
     tags:
diff --git a/core/lib/Drupal/Core/Routing/RouteBuilder.php b/core/lib/Drupal/Core/Routing/RouteBuilder.php
index e201b42..b93088d 100644
--- a/core/lib/Drupal/Core/Routing/RouteBuilder.php
+++ b/core/lib/Drupal/Core/Routing/RouteBuilder.php
@@ -8,6 +8,7 @@
 namespace Drupal\Core\Routing;
 
 use Drupal\Component\Discovery\YamlDiscovery;
+use Drupal\Core\Access\AccessManagerInterface;
 use Drupal\Core\Controller\ControllerResolverInterface;
 use Drupal\Core\State\StateInterface;
 use Symfony\Component\EventDispatcher\Event;
@@ -87,6 +88,11 @@ class RouteBuilder implements RouteBuilderInterface {
   protected $building = FALSE;
 
   /**
+   * @var \Drupal\Core\Access\AccessManagerInterface
+   */
+  protected $accessManager;
+
+  /**
    * Constructs the RouteBuilder using the passed MatcherDumperInterface.
    *
    * @param \Drupal\Core\Routing\MatcherDumperInterface $dumper
@@ -101,14 +107,17 @@ class RouteBuilder implements RouteBuilderInterface {
    *   The controller resolver.
    * @param \Drupal\Core\Routing\RouteBuilderIndicatorInterface $route_build_indicator
    *   The route build indicator.
+   * @param \Drupal\Core\Access\AccessManagerInterface $access_manager
+   *   The access manager.
    */
-  public function __construct(MatcherDumperInterface $dumper, LockBackendInterface $lock, EventDispatcherInterface $dispatcher, ModuleHandlerInterface $module_handler, ControllerResolverInterface $controller_resolver, RouteBuilderIndicatorInterface $route_build_indicator = NULL) {
+  public function __construct(MatcherDumperInterface $dumper, LockBackendInterface $lock, EventDispatcherInterface $dispatcher, ModuleHandlerInterface $module_handler, ControllerResolverInterface $controller_resolver, RouteBuilderIndicatorInterface $route_build_indicator = NULL, $access_manager) {
     $this->dumper = $dumper;
     $this->lock = $lock;
     $this->dispatcher = $dispatcher;
     $this->moduleHandler = $module_handler;
     $this->controllerResolver = $controller_resolver;
     $this->routeBuilderIndicator = $route_build_indicator;
+    $this->accessManager = $access_manager;
   }
 
   /**
@@ -179,6 +188,8 @@ public function rebuild() {
     // make it clear.
     $this->dispatcher->dispatch(RoutingEvents::ALTER, new RouteBuildEvent($collection));
 
+    $this->accessManager->setChecks($collection);
+
     $this->dumper->addRoutes($collection);
     $this->dumper->dump();
 
diff --git a/core/tests/Drupal/Tests/Core/Routing/RouteBuilderTest.php b/core/tests/Drupal/Tests/Core/Routing/RouteBuilderTest.php
index e28261b..e9fb871 100644
--- a/core/tests/Drupal/Tests/Core/Routing/RouteBuilderTest.php
+++ b/core/tests/Drupal/Tests/Core/Routing/RouteBuilderTest.php
@@ -78,6 +78,11 @@ class RouteBuilderTest extends UnitTestCase {
    */
   protected $routeBuilderIndicator;
 
+  /**
+   * @var \Drupal\Core\Access\AccessManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+   */
+  protected $accessManager;
+
   protected function setUp() {
     $this->dumper = $this->getMock('Drupal\Core\Routing\MatcherDumperInterface');
     $this->lock = $this->getMock('Drupal\Core\Lock\LockBackendInterface');
@@ -88,8 +93,9 @@ protected function setUp() {
       ->disableOriginalConstructor()
       ->getMock();
     $this->routeBuilderIndicator = $this->getMock('\Drupal\Core\Routing\RouteBuilderIndicatorInterface');
+    $this->accessManager = $this->getMock('Drupal\Core\Access\AccessManagerInterface');
 
-    $this->routeBuilder = new TestRouteBuilder($this->dumper, $this->lock, $this->dispatcher, $this->moduleHandler, $this->controllerResolver, $this->routeBuilderIndicator);
+    $this->routeBuilder = new TestRouteBuilder($this->dumper, $this->lock, $this->dispatcher, $this->moduleHandler, $this->controllerResolver, $this->routeBuilderIndicator, $this->accessManager);
     $this->routeBuilder->setYamlDiscovery($this->yamlDiscovery);
   }
 
@@ -168,6 +174,11 @@ public function testRebuildWithStaticModuleRoutes() {
       ->method('dispatch')
       ->with(RoutingEvents::ALTER, $route_build_event);
 
+    // Ensure that access checks are set.
+    $this->accessManager->expects($this->once())
+      ->method('setChecks')
+      ->with($route_collection);
+
     // Ensure that the routes are set to the dumper and dumped.
     $this->dumper->expects($this->at(0))
       ->method('addRoutes')
@@ -233,6 +244,11 @@ public function testRebuildWithProviderBasedRoutes() {
       ->method('dispatch')
       ->with(RoutingEvents::ALTER, $route_build_event);
 
+    // Ensure that access checks are set.
+    $this->accessManager->expects($this->once())
+      ->method('setChecks')
+      ->with($route_collection_filled);
+
     // Ensure that the routes are set to the dumper and dumped.
     $this->dumper->expects($this->at(0))
       ->method('addRoutes')
