Merge "Revert "Verify graph information in ServiceLoaderTest""
diff --git a/infra/config/global/cr-buildbucket.cfg b/infra/config/global/cr-buildbucket.cfg
new file mode 100644
index 0000000..1833ca9
--- /dev/null
+++ b/infra/config/global/cr-buildbucket.cfg
@@ -0,0 +1,226 @@
+# Defines buckets on cr-buildbucket.appspot.com, used by to schedule builds
+# on buildbot. In particular, CQ uses some of these buckets to schedule tryjobs.
+#
+# See http://luci-config.appspot.com/schemas/projects:buildbucket.cfg for
+# schema of this file and documentation.
+#
+# Please keep this list sorted by bucket name.
+
+builder_mixins {
+  name: "linux"
+  dimensions: "os:Ubuntu-14.04"
+}
+
+builder_mixins {
+  name: "win"
+  dimensions: "os:Windows-10"
+}
+
+builder_mixins {
+  name: "mac"
+  dimensions: "os:Mac-10.13"
+  dimensions: "cores:"  # Macs can be 4 or 8 cores.
+}
+
+builder_mixins {
+  name: "build_limited_scripts_slave recipe"
+  recipe {
+    cipd_package: "infra_internal/recipe_bundles/chrome-internal.googlesource.com/chrome/tools/build_limited/scripts/slave"
+    cipd_version: "refs/heads/master"
+  }
+}
+
+acl_sets {
+  name: "ci"
+  acls {
+    role: READER
+    group: "project-r8-readers"
+  }
+  acls {
+    role: SCHEDULER
+    identity: "luci-scheduler@appspot.gserviceaccount.com"
+  }
+}
+
+acl_sets {
+  name: "try"
+  acls {
+    role: READER
+    group: "project-r8-readers"
+  }
+  acls {
+    role: WRITER
+    group: "project-r8-admins"
+  }
+  acls {
+    role: SCHEDULER
+    group: "service-account-cq"
+  }
+  acls {
+    role: SCHEDULER
+    group: "project-r8-tryjob-access"
+  }
+}
+
+buckets {
+  name: "luci.r8.ci"
+  acl_sets: "ci"
+  swarming {
+    hostname: "chrome-swarming.appspot.com"
+    builder_defaults {
+      dimensions: "cores:8"
+      dimensions: "cpu:x86-64"
+      dimensions: "pool:luci.r8.ci"
+      service_account: "r8-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      execution_timeout_secs: 10800  # 3h
+      swarming_tags: "vpython:native-python-wrapper"
+      build_numbers: YES
+      luci_migration_host: "luci-migration.appspot.com"
+      recipe {
+        properties: "mastername:internal.client.r8"
+        name: "rex"
+      }
+    }
+
+    builders {
+      name: "archive"
+      mixins: "linux"
+    }
+    builders {
+      name: "archive_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-4.0.4"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-4.0.4_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-4.4.4"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-4.4.4_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-5.1.1"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-5.1.1_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-6.0.1"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-6.0.1_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-7.0.0"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-android-7.0.0_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-jctf"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux-jctf_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "d8-linux_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-4.0.4"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-4.0.4_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-4.4.4"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-4.4.4_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-5.1.1"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-5.1.1_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-6.0.1"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-6.0.1_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-7.0.0"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-android-7.0.0_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-internal"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-internal_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-jctf"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux-jctf_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "linux_release"
+      mixins: "linux"
+    }
+    builders {
+      name: "r8cf-linux-jctf"
+      mixins: "linux"
+    }
+    builders {
+      name: "windows"
+      mixins: "win"
+    }
+    builders {
+      name: "windows_release"
+      mixins: "win"
+    }
+  }
+}
diff --git a/infra/config/global/luci-logdog.cfg b/infra/config/global/luci-logdog.cfg
new file mode 100644
index 0000000..985ab91
--- /dev/null
+++ b/infra/config/global/luci-logdog.cfg
@@ -0,0 +1,14 @@
+# For the schema of this file and documentation, see ProjectConfig message in
+# https://luci-config.appspot.com/schemas/services/luci-logdog:logdog.cfg
+# This is for the pdfium project, but we're going to piggyback
+# off of the chromium settings.
+
+# Auth groups who can read log streams.
+reader_auth_groups: "project-r8-readers"
+# Auth groups who can register and emit new log streams.
+writer_auth_groups: "luci-logdog-r8-writers"
+# The base Google Storage archival path for this project.
+#
+# Archived LogDog logs will be written to this bucket/path.
+archive_gs_bucket: "logdog-r8-archive"
+
diff --git a/infra/config/global/luci-milo.cfg b/infra/config/global/luci-milo.cfg
new file mode 100644
index 0000000..42f3cdc
--- /dev/null
+++ b/infra/config/global/luci-milo.cfg
@@ -0,0 +1,184 @@
+consoles {
+  id: "main"
+  name: "r8 Main Console"
+  repo_url: "https://r8.googlesource.com/r8"
+  refs: "refs/heads/master"
+  manifest_name: "REVISION"
+
+
+  builders {
+    name: "buildbucket/luci.r8.ci/archive"
+    category: "archive"
+    short_name: "arc"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/archive_release"
+    category: "archive_release"
+    short_name: "arc"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux"
+    category: "d8-linux"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-4.0.4"
+    category: "d8-linux-android-4.0.4"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-4.0.4_release"
+    category: "d8-linux-android-4.0.4_release"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-4.4.4"
+    category: "d8-linux-android-4.4.4"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-4.4.4_release"
+    category: "d8-linux-android-4.4.4_release"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-5.1.1"
+    category: "d8-linux-android-5.1.1"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-5.1.1_release"
+    category: "d8-linux-android-5.1.1_release"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-6.0.1"
+    category: "d8-linux-android-6.0.1"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-6.0.1_release"
+    category: "d8-linux-android-6.0.1_release"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-7.0.0"
+    category: "d8-linux-android-7.0.0"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-android-7.0.0_release"
+    category: "d8-linux-android-7.0.0_release"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-jctf"
+    category: "d8-linux-jctf"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux-jctf_release"
+    category: "d8-linux-jctf_release"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/d8-linux_release"
+    category: "d8-linux_release"
+    short_name: "d8-"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux"
+    category: "linux"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-4.0.4"
+    category: "linux-android-4.0.4"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-4.0.4_release"
+    category: "linux-android-4.0.4_release"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-4.4.4"
+    category: "linux-android-4.4.4"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-4.4.4_release"
+    category: "linux-android-4.4.4_release"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-5.1.1"
+    category: "linux-android-5.1.1"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-5.1.1_release"
+    category: "linux-android-5.1.1_release"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-6.0.1"
+    category: "linux-android-6.0.1"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-6.0.1_release"
+    category: "linux-android-6.0.1_release"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-7.0.0"
+    category: "linux-android-7.0.0"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-android-7.0.0_release"
+    category: "linux-android-7.0.0_release"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-internal"
+    category: "linux-internal"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-internal_release"
+    category: "linux-internal_release"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-jctf"
+    category: "linux-jctf"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux-jctf_release"
+    category: "linux-jctf_release"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/linux_release"
+    category: "linux_release"
+    short_name: "lin"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/r8cf-linux-jctf"
+    category: "r8cf-linux-jctf"
+    short_name: "r8c"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/windows"
+    category: "windows"
+    short_name: "win"
+  }
+  builders {
+    name: "buildbucket/luci.r8.ci/windows_release"
+    category: "windows_release"
+    short_name: "win"
+  }
+}
diff --git a/infra/config/global/luci-scheduler.cfg b/infra/config/global/luci-scheduler.cfg
new file mode 100644
index 0000000..653f1dc
--- /dev/null
+++ b/infra/config/global/luci-scheduler.cfg
@@ -0,0 +1,415 @@
+# Defines jobs on luci-scheduler.appspot.com.
+#
+# For schema of this file and documentation see ProjectConfig message in
+#
+# https://chromium.googlesource.com/infra/luci/luci-go/+/master/scheduler/appengine/messages/config.proto
+
+acl_sets {
+  name: "default"
+  acls {
+    role: READER
+    granted_to: "group:project-r8-readers"
+  }
+  acls {
+    role: OWNER
+    granted_to: "group:project-r8-admins"
+  }
+}
+
+trigger {
+  id: "master-gitiles-trigger"
+  acl_sets: "default"
+  gitiles: {
+    repo: "https://r8.googlesource.com/r8.git"
+    refs: "refs/heads/master"
+  }
+
+  triggers: "archive"
+  triggers: "archive_release"
+  triggers: "d8-linux"
+  triggers: "d8-linux-android-4.0.4"
+  triggers: "d8-linux-android-4.0.4_release"
+  triggers: "d8-linux-android-4.4.4"
+  triggers: "d8-linux-android-4.4.4_release"
+  triggers: "d8-linux-android-5.1.1"
+  triggers: "d8-linux-android-5.1.1_release"
+  triggers: "d8-linux-android-6.0.1"
+  triggers: "d8-linux-android-6.0.1_release"
+  triggers: "d8-linux-android-7.0.0"
+  triggers: "d8-linux-android-7.0.0_release"
+  triggers: "d8-linux-jctf"
+  triggers: "d8-linux-jctf_release"
+  triggers: "d8-linux_release"
+  triggers: "linux"
+  triggers: "linux-android-4.0.4"
+  triggers: "linux-android-4.0.4_release"
+  triggers: "linux-android-4.4.4"
+  triggers: "linux-android-4.4.4_release"
+  triggers: "linux-android-5.1.1"
+  triggers: "linux-android-5.1.1_release"
+  triggers: "linux-android-6.0.1"
+  triggers: "linux-android-6.0.1_release"
+  triggers: "linux-android-7.0.0"
+  triggers: "linux-android-7.0.0_release"
+  triggers: "linux-internal"
+  triggers: "linux-internal_release"
+  triggers: "linux-jctf"
+  triggers: "linux-jctf_release"
+  triggers: "linux_release"
+  triggers: "r8cf-linux-jctf"
+  triggers: "windows"
+  triggers: "windows_release"
+
+}
+
+
+job {
+  id: "archive"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "archive"
+  }
+}
+
+job {
+  id: "archive_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "archive_release"
+  }
+}
+
+job {
+  id: "d8-linux"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux"
+  }
+}
+
+job {
+  id: "d8-linux-android-4.0.4"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-4.0.4"
+  }
+}
+
+job {
+  id: "d8-linux-android-4.0.4_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-4.0.4_release"
+  }
+}
+
+job {
+  id: "d8-linux-android-4.4.4"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-4.4.4"
+  }
+}
+
+job {
+  id: "d8-linux-android-4.4.4_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-4.4.4_release"
+  }
+}
+
+job {
+  id: "d8-linux-android-5.1.1"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-5.1.1"
+  }
+}
+
+job {
+  id: "d8-linux-android-5.1.1_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-5.1.1_release"
+  }
+}
+
+job {
+  id: "d8-linux-android-6.0.1"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-6.0.1"
+  }
+}
+
+job {
+  id: "d8-linux-android-6.0.1_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-6.0.1_release"
+  }
+}
+
+job {
+  id: "d8-linux-android-7.0.0"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-7.0.0"
+  }
+}
+
+job {
+  id: "d8-linux-android-7.0.0_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-android-7.0.0_release"
+  }
+}
+
+job {
+  id: "d8-linux-jctf"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-jctf"
+  }
+}
+
+job {
+  id: "d8-linux-jctf_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux-jctf_release"
+  }
+}
+
+job {
+  id: "d8-linux_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "d8-linux_release"
+  }
+}
+
+job {
+  id: "linux"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux"
+  }
+}
+
+job {
+  id: "linux-android-4.0.4"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-4.0.4"
+  }
+}
+
+job {
+  id: "linux-android-4.0.4_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-4.0.4_release"
+  }
+}
+
+job {
+  id: "linux-android-4.4.4"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-4.4.4"
+  }
+}
+
+job {
+  id: "linux-android-4.4.4_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-4.4.4_release"
+  }
+}
+
+job {
+  id: "linux-android-5.1.1"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-5.1.1"
+  }
+}
+
+job {
+  id: "linux-android-5.1.1_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-5.1.1_release"
+  }
+}
+
+job {
+  id: "linux-android-6.0.1"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-6.0.1"
+  }
+}
+
+job {
+  id: "linux-android-6.0.1_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-6.0.1_release"
+  }
+}
+
+job {
+  id: "linux-android-7.0.0"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-7.0.0"
+  }
+}
+
+job {
+  id: "linux-android-7.0.0_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-android-7.0.0_release"
+  }
+}
+
+job {
+  id: "linux-internal"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-internal"
+  }
+}
+
+job {
+  id: "linux-internal_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-internal_release"
+  }
+}
+
+job {
+  id: "linux-jctf"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-jctf"
+  }
+}
+
+job {
+  id: "linux-jctf_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux-jctf_release"
+  }
+}
+
+job {
+  id: "linux_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "linux_release"
+  }
+}
+
+job {
+  id: "r8cf-linux-jctf"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "r8cf-linux-jctf"
+  }
+}
+
+job {
+  id: "windows"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "windows"
+  }
+}
+
+job {
+  id: "windows_release"
+  acl_sets: "default"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.r8.ci"
+    builder: "windows_release"
+  }
+}
+
diff --git a/infra/config/global/project.cfg b/infra/config/global/project.cfg
new file mode 100644
index 0000000..d1cef54
--- /dev/null
+++ b/infra/config/global/project.cfg
@@ -0,0 +1,4 @@
+# For the schema of this file and documentation, see ProjectCfg message in
+# https://luci-config.appspot.com/schemas/projects:project.cfg
+name: "r8"
+access: "group:project-r8-readers"
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 95bfbc0..ed92acc 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "1.5.5-dev";
+  public static final String LABEL = "1.5.6-dev";
 
   private Version() {
   }
diff --git a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
index 51f9de0..c0008dc 100644
--- a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
+++ b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
@@ -9,6 +9,7 @@
 
 import com.android.tools.r8.cf.FixedLocalValue;
 import com.android.tools.r8.dex.Constants;
+import com.android.tools.r8.errors.CompilationError;
 import com.android.tools.r8.graph.AppInfo;
 import com.android.tools.r8.graph.DebugLocalInfo;
 import com.android.tools.r8.ir.analysis.type.TypeLatticeElement;
@@ -618,6 +619,13 @@
       return realRegisterNumberFromAllocated(value.asFixedRegisterValue().getRegister());
     }
     LiveIntervals intervals = value.getLiveIntervals();
+    if (intervals == null) {
+      throw new CompilationError(
+          "Unexpected attempt to get register for a value without a register in method `"
+              + code.method.method.toSourceString()
+              + "`.",
+          code.origin);
+    }
     if (intervals.hasSplits()) {
       intervals = intervals.getSplitCovering(instructionNumber);
     }
diff --git a/src/main/java/com/android/tools/r8/naming/Minifier.java b/src/main/java/com/android/tools/r8/naming/Minifier.java
index 7f389a4..af18595 100644
--- a/src/main/java/com/android/tools/r8/naming/Minifier.java
+++ b/src/main/java/com/android/tools/r8/naming/Minifier.java
@@ -25,7 +25,6 @@
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.Timing;
 import com.google.common.collect.ImmutableMap;
-import java.util.HashMap;
 import java.util.IdentityHashMap;
 import java.util.Map;
 import java.util.Set;
@@ -87,13 +86,11 @@
     return lens;
   }
 
-  static class MinifiedRenaming extends NamingLens {
+  private static class MinifiedRenaming extends NamingLens {
 
     private final AppInfo appInfo;
     private final Map<String, String> packageRenaming;
     private final Map<DexItem, DexString> renaming = new IdentityHashMap<>();
-    // This set is only used for asserting no duplicated names.
-    private final Map<DexString, DexType> renamedTypesForVerification;
 
     private MinifiedRenaming(
         ClassRenaming classRenaming,
@@ -106,10 +103,6 @@
       renaming.putAll(methodRenaming.renaming);
       renaming.putAll(methodRenaming.callSiteRenaming);
       renaming.putAll(fieldRenaming.renaming);
-      renamedTypesForVerification = new HashMap<>();
-      for (Map.Entry<DexType, DexString> entry : classRenaming.classRenaming.entrySet()) {
-        renamedTypesForVerification.put(entry.getValue(), entry.getKey());
-      }
     }
 
     @Override
@@ -119,18 +112,7 @@
 
     @Override
     public DexString lookupDescriptor(DexType type) {
-      DexString dexString = renaming.get(type);
-      if (dexString != null) {
-        return dexString;
-      }
-      assert type.isPrimitiveType()
-              || type.isVoidType()
-              || !renamedTypesForVerification.containsKey(type.descriptor)
-          : "Duplicate minified type '"
-              + type.descriptor
-              + "' already mapped for: "
-              + renamedTypesForVerification.get(type.descriptor);
-      return type.descriptor;
+      return renaming.getOrDefault(type, type.descriptor);
     }
 
     @Override
diff --git a/src/test/java/com/android/tools/r8/naming/MinifierTest.java b/src/test/java/com/android/tools/r8/naming/MinifierTest.java
index adf74ce..473ca53 100644
--- a/src/test/java/com/android/tools/r8/naming/MinifierTest.java
+++ b/src/test/java/com/android/tools/r8/naming/MinifierTest.java
@@ -3,16 +3,13 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.naming;
 
-import static junit.framework.TestCase.assertTrue;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.fail;
 
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.naming.Minifier.MinifiedRenaming;
 import com.android.tools.r8.utils.ListUtils;
 import com.android.tools.r8.utils.Timing;
 import java.nio.file.Paths;
@@ -43,25 +40,6 @@
     inspection.accept(dexItemFactory, naming);
   }
 
-  @Test
-  public void ensureClassesAddedToRenamingOrNoClashTest() throws Exception {
-    MinifiedRenaming naming =
-        (MinifiedRenaming) runMinifier(ListUtils.map(keepRulesFiles, Paths::get));
-    // Create a type that exists.
-    String existingType = "La/c;";
-    DexType d = dexItemFactory.createType(existingType);
-    try {
-      naming.lookupDescriptor(d);
-    } catch (AssertionError ae) {
-      assertTrue(
-          ae.getMessage()
-              .startsWith(
-                  "Duplicate minified type '" + existingType + "' already mapped for: naming001."));
-      return;
-    }
-    fail("Should have thrown an error.");
-  }
-
   @Parameters(name = "test: {0} keep: {1}")
   public static Collection<Object[]> data() {
     List<String> tests = Arrays.asList("naming001");
diff --git a/src/test/java/com/android/tools/r8/naming/b124357885/B124357885Test.java b/src/test/java/com/android/tools/r8/naming/b124357885/B124357885Test.java
index 659a8fc..37a0215 100644
--- a/src/test/java/com/android/tools/r8/naming/b124357885/B124357885Test.java
+++ b/src/test/java/com/android/tools/r8/naming/b124357885/B124357885Test.java
@@ -89,7 +89,7 @@
 
     // Convince R8 we only use subtypes to get class merging of Foo into FooImpl.
     Foo<String> foo = new FooImpl<>();
-    System.out.println(foo.getClass().getTypeName());
+    System.out.println(foo.getClass().getCanonicalName());
   }
 }
 
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index ef72d12..f3cc2eb 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -107,6 +107,7 @@
       'app_module': '',
       'flavor': 'play',
       'git_repo': 'https://github.com/mkj-gram/Signal-Android.git',
+      'main_dex_rules': 'multidex-config.pro',
       'revision': '85e1a10993e5e9ffe923f0798b26cbc44068ba31',
       'releaseTarget': 'assemblePlayRelease',
       'signed-apk-name': 'Signal-play-release-4.32.7.apk',
@@ -353,6 +354,13 @@
 
           # Now rebuild generated apk.
           previous_apk = apk_dest
+
+          # We may need main dex rules when re-compiling with R8 as standalone.
+          main_dex_rules = None
+          if config.get('main_dex_rules'):
+            main_dex_rules = os.path.join(
+                checkout_dir, config.get('main_dex_rules'))
+
           for i in range(1, options.r8_compilation_steps):
             try:
               recompiled_apk_dest = os.path.join(
@@ -360,7 +368,7 @@
               RebuildAppWithShrinker(
                   app, previous_apk, recompiled_apk_dest,
                   ext_proguard_config_file, shrinker, min_sdk, compile_sdk,
-                  options, temp_dir)
+                  options, temp_dir, main_dex_rules)
               recompilation_result = {
                 'apk_dest': recompiled_apk_dest,
                 'build_status': 'success',
@@ -483,7 +491,7 @@
 
 def RebuildAppWithShrinker(
     app, apk, apk_dest, proguard_config_file, shrinker, min_sdk, compile_sdk,
-    options, temp_dir):
+    options, temp_dir, main_dex_rules):
   assert 'r8' in shrinker
   assert apk_dest.endswith('.apk')
 
@@ -507,6 +515,10 @@
     cmd.append('--lib')
     cmd.append(android_optional_jar)
 
+  if main_dex_rules:
+    cmd.append('--main-dex-rules')
+    cmd.append(main_dex_rules)
+
   utils.RunCmd(cmd, quiet=options.quiet)
 
   # Make a copy of the given APK, move the newly generated dex files into the