diff --git a/core/core.services.yml b/core/core.services.yml
index 677086f..cf93d60 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.check_provider']
   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..42ce881 100644
--- a/core/lib/Drupal/Core/Routing/RouteBuilder.php
+++ b/core/lib/Drupal/Core/Routing/RouteBuilder.php
@@ -2,22 +2,21 @@
 
 /**
  * @file
- * Definition of Drupal\Core\Routing\RouteBuilder.
+ * Contains \Drupal\Core\Routing\RouteBuilder.
  */
 
 namespace Drupal\Core\Routing;
 
 use Drupal\Component\Discovery\YamlDiscovery;
+use Drupal\Core\Access\CheckProviderInterface;
 use Drupal\Core\Controller\ControllerResolverInterface;
-use Drupal\Core\State\StateInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Lock\LockBackendInterface;
 use Symfony\Component\EventDispatcher\Event;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use Symfony\Component\Routing\RouteCollection;
 use Symfony\Component\Routing\Route;
 
-use Drupal\Core\Extension\ModuleHandlerInterface;
-use Drupal\Core\Lock\LockBackendInterface;
-
 /**
  * Managing class for rebuilding the router table.
  */
@@ -87,6 +86,13 @@ class RouteBuilder implements RouteBuilderInterface {
   protected $building = FALSE;
 
   /**
+   * The check provider.
+   *
+   * @var \Drupal\Core\Access\CheckProviderInterface
+   */
+  protected $checkProvider;
+
+  /**
    * 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\CheckProviderInterface $check_provider
+   *   The check provider.
    */
-  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, CheckProviderInterface $check_provider) {
     $this->dumper = $dumper;
     $this->lock = $lock;
     $this->dispatcher = $dispatcher;
     $this->moduleHandler = $module_handler;
     $this->controllerResolver = $controller_resolver;
     $this->routeBuilderIndicator = $route_build_indicator;
+    $this->checkProvider = $check_provider;
   }
 
   /**
@@ -179,6 +188,8 @@ public function rebuild() {
     // make it clear.
     $this->dispatcher->dispatch(RoutingEvents::ALTER, new RouteBuildEvent($collection));
 
+    $this->checkProvider->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..8eac0df 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\CheckProviderInterface|\PHPUnit_Framework_MockObject_MockObject
+   */
+  protected $checkProvider;
+
   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->checkProvider = $this->getMock('\Drupal\Core\Access\CheckProviderInterface');
 
-    $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->checkProvider);
     $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->checkProvider->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->checkProvider->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')
