diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java | 30 |
1 files changed, 29 insertions, 1 deletions
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 467b7a73f8..cb0d288788 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 @@ -91,6 +91,7 @@ public class PackageFunction implements SkyFunction { private final Cache<PackageIdentifier, CacheEntryWithGlobDeps<AstAfterPreprocessing>> astCache; private final AtomicBoolean showLoadingProgress; private final AtomicInteger numPackagesLoaded; + private final PackageProgressReceiver packageProgress; private final Profiler profiler = Profiler.instance(); private final Label preludeLabel; @@ -106,7 +107,8 @@ public class PackageFunction implements SkyFunction { Cache<PackageIdentifier, CacheEntryWithGlobDeps<Package.Builder>> packageFunctionCache, Cache<PackageIdentifier, CacheEntryWithGlobDeps<AstAfterPreprocessing>> astCache, AtomicInteger numPackagesLoaded, - @Nullable SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining) { + @Nullable SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining, + @Nullable PackageProgressReceiver packageProgress) { this.skylarkImportLookupFunctionForInlining = skylarkImportLookupFunctionForInlining; // Can be null in tests. this.preludeLabel = packageFactory == null @@ -118,6 +120,26 @@ public class PackageFunction implements SkyFunction { this.packageFunctionCache = packageFunctionCache; this.astCache = astCache; this.numPackagesLoaded = numPackagesLoaded; + this.packageProgress = packageProgress; + } + + public PackageFunction( + PackageFactory packageFactory, + CachingPackageLocator pkgLocator, + AtomicBoolean showLoadingProgress, + Cache<PackageIdentifier, CacheEntryWithGlobDeps<Package.Builder>> packageFunctionCache, + Cache<PackageIdentifier, CacheEntryWithGlobDeps<AstAfterPreprocessing>> astCache, + AtomicInteger numPackagesLoaded, + @Nullable SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining) { + this( + packageFactory, + pkgLocator, + showLoadingProgress, + packageFunctionCache, + astCache, + numPackagesLoaded, + skylarkImportLookupFunctionForInlining, + null); } public void setSkylarkImportLookupFunctionForInliningForTesting( @@ -1096,6 +1118,9 @@ public class PackageFunction implements SkyFunction { packageFunctionCache.getIfPresent(packageId); if (packageFunctionCacheEntry == null) { profiler.startTask(ProfilerTask.CREATE_PACKAGE, packageId.toString()); + if (packageProgress != null) { + packageProgress.startReadPackage(packageId); + } try { CacheEntryWithGlobDeps<AstAfterPreprocessing> astCacheEntry = astCache.getIfPresent(packageId); @@ -1183,6 +1208,9 @@ public class PackageFunction implements SkyFunction { packageFunctionCacheEntry = new CacheEntryWithGlobDeps<>(pkgBuilder, globDepsRequested, null); numPackagesLoaded.incrementAndGet(); + if (packageProgress != null) { + packageProgress.doneReadPackage(packageId); + } packageFunctionCache.put(packageId, packageFunctionCacheEntry); } finally { profiler.completeTask(ProfilerTask.CREATE_PACKAGE); |