diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index ca3ed51..222200d 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -601,10 +601,15 @@ function _menu_check_access(&$item, $map) {
   }
   else {
     $arguments = menu_unserialize($item['access_arguments'], $map);
-    // As call_user_func_array is quite slow and user_access is a very common
+    // As call_user_func_array is quite slow and hasPermission is a very common
     // callback, it is worth making a special case for it.
     if ($callback == 'user_access') {
-      $item['access'] = (count($arguments) == 1) ? user_access($arguments[0]) : user_access($arguments[0], $arguments[1]);
+      if (count($arguments) == 1) {
+        $item['access'] = \Drupal::currentUser()->hasPermission($arguments[0]);
+      }
+      else {
+        $arguments[1]->hasPermission($arguments[0]);
+      }
     }
     else {
       $item['access'] = call_user_func_array($callback, $arguments);
@@ -3200,12 +3205,12 @@ function _menu_router_save($menu, $masks) {
 function _menu_site_is_offline($check_only = FALSE) {
   // Check if site is in maintenance mode.
   if (\Drupal::state()->get('system.maintenance_mode')) {
-    if (user_access('access site in maintenance mode')) {
+    if (\Drupal::currentUser()->hasPermission('access site in maintenance mode')) {
       // Ensure that the maintenance mode message is displayed only once
       // (allowing for page redirects) and specifically suppress its display on
       // the maintenance mode settings page.
       if (!$check_only && current_path() != 'admin/config/development/maintenance') {
-        if (user_access('administer site configuration')) {
+        if (\Drupal::currentUser()->hasPermission('administer site configuration')) {
           drupal_set_message(t('Operating in maintenance mode. <a href="@url">Go online.</a>', array('@url' => url('admin/config/development/maintenance'))), 'status', FALSE);
         }
         else {
