Merge RP1A.200423.002

Change-Id: I0c91751de0ee4459848b36adc181ab7a7e068275
diff --git a/JavaLibrary.bp b/JavaLibrary.bp
index 86cd296..3287585 100644
--- a/JavaLibrary.bp
+++ b/JavaLibrary.bp
@@ -460,6 +460,7 @@
     srcs: [
         ":openjdk_lambda_stub_files",
     ],
+    include_srcs: true,
 }
 
 // Creates a jar that exists to satisfy javac when compiling source code that
@@ -982,11 +983,12 @@
     },
 }
 
-// Used when compiling higher-level code against core.current.stubs.
-java_system_modules {
-    name: "core-current-stubs-system-modules",
-    visibility: ["//visibility:public"],
-    libs: [
+// Distributed with the SDK for turning into system modules to compile apps
+// against.
+java_library {
+    name: "core-current-stubs-for-system-modules",
+    visibility: ["//development/sdk"],
+    static_libs: [
         "core.current.stubs",
         // This one is not on device but it's needed when javac compiles code
         // containing lambdas.
@@ -997,6 +999,24 @@
         // See http://b/123891440.
         "core-generated-annotation-stubs",
     ],
+    sdk_version: "none",
+    system_modules: "none",
+    dist: {
+        dest: "core-for-system-modules.jar",
+        targets: [
+            "sdk",
+            "win_sdk",
+        ],
+    },
+}
+
+// Used when compiling higher-level code against core.current.stubs.
+java_system_modules {
+    name: "core-current-stubs-system-modules",
+    visibility: ["//visibility:public"],
+    libs: [
+        "core-current-stubs-for-system-modules",
+    ],
 }
 
 // Target for validating nullability annotations for correctness and
diff --git a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java b/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
index 475acd9..7e8fe36 100644
--- a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
+++ b/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
@@ -59,6 +59,12 @@
         for (ULocale uLocale : localesToPin) {
             new DecimalFormatSymbols(uLocale);
         }
+
+        // Framework's LocalLog is used during app start-up. It indirectly uses the current ICU time
+        // zone. Pre-loading the current time zone in ICU improves app startup time. b/150605074
+        // We're being explicit about the fully qualified name of the TimeZone class to avoid
+        // confusion with java.util.TimeZome.getDefault().
+        android.icu.util.TimeZone.getDefault();
     }
 
     /**