Use another cache to store preprocessing results instead of redoing the work.

This should have no effect.

--
MOS_MIGRATED_REVID=102342697
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
index 2c7b068..9e3b8d5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
@@ -84,6 +84,7 @@
   private final PackageFactory packageFactory;
   private final CachingPackageLocator packageLocator;
   private final Cache<PackageIdentifier, Package.LegacyBuilder> packageFunctionCache;
+  private final Cache<PackageIdentifier, Preprocessor.Result> preprocessCache;
   private final AtomicBoolean showLoadingProgress;
   private final AtomicInteger numPackagesLoaded;
   private final Profiler profiler = Profiler.instance();
@@ -96,6 +97,7 @@
   public PackageFunction(Reporter reporter, PackageFactory packageFactory,
       CachingPackageLocator pkgLocator, AtomicBoolean showLoadingProgress,
       Cache<PackageIdentifier, Package.LegacyBuilder> packageFunctionCache,
+      Cache<PackageIdentifier, Preprocessor.Result> preprocessCache,
       AtomicInteger numPackagesLoaded) {
     this.reporter = reporter;
 
@@ -107,6 +109,7 @@
     this.packageLocator = pkgLocator;
     this.showLoadingProgress = showLoadingProgress;
     this.packageFunctionCache = packageFunctionCache;
+    this.preprocessCache = preprocessCache;
     this.numPackagesLoaded = numPackagesLoaded;
   }
 
@@ -795,10 +798,14 @@
         Globber globber = packageFactory.createLegacyGlobber(buildFilePath.getParentDirectory(),
             packageId, packageLocator);
         StoredEventHandler localReporter = new StoredEventHandler();
-        Preprocessor.Result preprocessingResult = replacementSource == null
-            ? packageFactory.preprocess(packageId, buildFilePath, inputSource, globber,
-                localReporter)
-                : Preprocessor.Result.noPreprocessing(replacementSource);
+        Preprocessor.Result preprocessingResult = preprocessCache.getIfPresent(packageId);
+        if (preprocessingResult == null) {
+          preprocessingResult = replacementSource == null
+              ? packageFactory.preprocess(packageId, buildFilePath, inputSource, globber,
+                  localReporter)
+              : Preprocessor.Result.noPreprocessing(replacementSource);
+          preprocessCache.put(packageId, preprocessingResult);
+        }
 
         SkylarkImportResult importResult =
             discoverSkylarkImports(
@@ -811,6 +818,7 @@
         if (importResult == null) {
           return null;
         }
+        preprocessCache.invalidate(packageId);
 
         pkgBuilder = packageFactory.createPackageFromPreprocessingResult(externalPkg, packageId,
             buildFilePath, preprocessingResult, localReporter.getEvents(), preludeStatements,