Skip to content

[ClangImporter] Support lazy member loading for import-as-member globals in extensions #71320

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 8, 2024

Conversation

beccadax
Copy link
Contributor

@beccadax beccadax commented Feb 1, 2024

In #71027, I addressed a cycle that could occur when loading import-as-member globals into an extension. However, that fix was minimal—it simply broke the cycle after it occurred. This PR is a more comprehensive fix that eliminates the cycle entirely by making import-as-member importing lazier.

The cycle was caused by the compiler forcing the extension to load its members immediately; it did that because the selective lazy member loading path (the loadNamedMembers() method) would crash for these specific extensions because they didn't have a clang node. This PR modifies loadNamedMembers() to work correctly, using the context parameter (instead of the absent clang node) to determine the submodule and skipping over lookup for the clang node's members. That allows us to modify name lookup to avoid forcing import-as-members extensions early. In addition to simplifying lazy member loader use sites, I expect this to reduce the number of members imported by ClangImporter, especially in code that uses NSNotification.Name, which uses this mechanism for a massive number of members.

The first commit also refactors the two code paths that add extension members to the member lookup table so that they share most of their code. It appears to be very difficult to write tests that are guaranteed to hit both of these, so in lieu of doing that, we can at least combine them to increase our confidence that both will work even if only one has been tested. This commit fixes rdar://121479725.

There are two pieces of code that can add an extension’s members to a type’s lookup table: `NominalTypeDecl::prepareLookupTable()`, which initializes the lookup table before its first use, and `NominalTypeDecl::addedExtension()`, which only updates a lookup table that has already been initialized. The two functions ought to do the same things, but it’s difficult to predict which one will be exercised by a given test, and in practice our current unit tests only seem to use `NominalTypeDecl::prepareLookupTable()` in certain important situations.

Factor the common code into a shared helper method, `MemberLookupTable::addExtension()`, to increase our confidence that both code paths will work correctly even if only one is hit by our unit tests.

Fixes rdar://121479725.
This will help when ClangImporter::Impl::loadNamedMembers() starts having to handle a lot more import-as-members names, but it’s NFC in this commit.
Previously, the lazily-created extensions used for globals imported as members of a type used the lazy module loader, but `ClangImporter::Implementation::loadNamedMembers()` didn’t actually work for them. Other parts of the compiler instead contrived to avoid loading these members by name by forcing all members to load before any selective loading might occur.

This commit modifies that code path to accommodate extensions with no matching clang node, which is how these are represented. With this change, other parts of the compiler can unconditionally use the `LazyMemberLoader` whenever it is present.

There may be performance improvements from this change, but I don’t expect any functional changes.
@beccadax
Copy link
Contributor Author

beccadax commented Feb 1, 2024

@swift-ci please smoke test

@beccadax
Copy link
Contributor Author

beccadax commented Feb 1, 2024

@swift-ci Please test compiler performance

@beccadax
Copy link
Contributor Author

beccadax commented Feb 1, 2024

If this does actually let the compiler do less work, I'd expect to see:

  • Higher NumUnloadedLazyIterableDeclContexts (fewer extensions had to be fully loaded)
  • Higher NamedLazyMemberLoadSuccessCount (more lookups went through the named lazy lookup path)

@slavapestov
Copy link
Contributor

Cool!

@beccadax
Copy link
Contributor Author

beccadax commented Feb 5, 2024

Here's the comment it didn't post:

Summary for main full

Regressions found (see below)

Debug-batch

debug-batch brief

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (2)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 131,855,857,097,291 131,115,941,672,410 -739,915,424,880 -0.56%
LLVM.NumLLVMBytesOutput 3,009,737,544 3,013,326,638 3,589,094 0.12%

debug-batch detailed

Regressed (1)
name old new delta delta_pct
Sema.LazyStoragePropertyRequest 2,094 2,122 28 1.34% ⛔
Improved (3)
name old new delta delta_pct
AST.NumTotalClangImportedEntities 1,861,848 1,693,767 -168,080 -9.03% ✅
Sema.HasMissingDesignatedInitializersRequest 33,971 32,893 -1,078 -3.17% ✅
Sema.InheritsSuperclassInitializersRequest 42,906 41,408 -1,498 -3.49% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (349)
name old new delta delta_pct
AST.ImportSetCacheHit 4,834,890 4,839,709 4,818 0.1%
AST.ImportSetCacheMiss 911,288 912,273 985 0.11%
AST.ImportSetFoldHit 434,505 435,348 842 0.19%
AST.ImportSetFoldMiss 476,783 476,925 142 0.03%
AST.ModuleShadowCacheHit 86,482 86,223 -259 -0.3%
AST.ModuleShadowCacheMiss 6,663 6,651 -12 -0.18%
AST.ModuleVisibilityCacheHit 106,917,078 106,971,747 54,668 0.05%
AST.ModuleVisibilityCacheMiss 469,619 469,757 138 0.03%
AST.NumASTBytesAllocated 75,493,778,883 75,180,515,965 -313,262,918 -0.41%
AST.NumASTScopeExpansions 10,572,473 10,586,844 14,371 0.14%
AST.NumASTScopeLookups 11,491,333 11,506,213 14,880 0.13%
AST.NumDecls 381,782 382,012 230 0.06%
AST.NumDependencies 326,276 326,367 91 0.03%
AST.NumIncrementalDependencies 40,148 40,148 0 0.0%
AST.NumLinkLibraries 0 0 0 0.0%
AST.NumLoadedModules 398,013 398,113 100 0.03%
AST.NumLocalTypeDecls 6,784 6,785 1 0.01%
AST.NumMacroPluginDependencies 36 36 0 0.0%
AST.NumModuleLookupClassMember 7,231 7,196 -35 -0.49%
AST.NumModuleLookupValue 133,243,263 133,384,147 140,883 0.11%
AST.NumObjCMethods 91,839 91,949 110 0.12%
AST.NumOperators 922 924 2 0.22%
AST.NumPrecedenceGroups 176 176 0 0.0%
AST.NumReferencedDynamicNames 153 152 0 -0.33%
AST.NumReferencedMemberNames 17,092,451 17,081,037 -11,414 -0.07%
AST.NumReferencedTopLevelNames 1,478,890 1,481,993 3,103 0.21%
AST.NumSourceBuffers 451,336 451,969 632 0.14%
AST.NumSourceLines 14,712,293 14,726,177 13,884 0.09%
AST.NumSourceLinesPerSecond 6,259,428 6,229,570 -29,858 -0.48%
Frontend.MaxMallocUsage 1,044,622,874,440 1,035,048,361,024 -9,574,513,416 -0.92%
Frontend.NumInstructionsExecuted 131,855,857,097,291 131,115,941,672,410 -739,915,424,880 -0.56%
Frontend.NumProcessFailures 47 47 0 0.0%
IRGen.IRGenRequest 31,788 31,839 51 0.16%
IRGen.OptimizedIRRequest 0 0 0 0.0%
IRGen.SymbolObjectCodeRequest 0 0 0 0.0%
IRModule.NumGOTEntries 357,061 357,343 281 0.08%
IRModule.NumIRAliases 306,515 306,705 189 0.06%
IRModule.NumIRBasicBlocks 10,430,512 10,439,647 9,135 0.09%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRFunctions 5,365,693 5,372,101 6,408 0.12%
IRModule.NumIRGlobals 4,946,823 4,952,483 5,659 0.11%
IRModule.NumIRIFuncs 0 0 0 0.0%
IRModule.NumIRInsts 118,667,854 118,745,411 77,557 0.07%
IRModule.NumIRNamedMetaData 128,672 128,878 206 0.16%
IRModule.NumIRValueSymbols 10,424,618 10,436,759 12,141 0.12%
LLVM.NumLLVMBytesOutput 3,009,737,544 3,013,326,638 3,589,094 0.12%
Parse.ExportedSourceFileRequest 478 478 0 0.0%
Parse.IDEInspectionSecondPassRequest 0 0 0 0.0%
Parse.NumFunctionsParsed 756,778 757,402 624 0.08%
Parse.NumIterableDeclContextParsed 957,762 958,828 1,065 0.11%
Parse.ParseAbstractFunctionBodyRequest 899,087 899,387 300 0.03%
Parse.ParseMembersRequest 739,969 740,916 947 0.13%
Parse.ParseSourceFileRequest 404,252 404,867 615 0.15%
Parse.ParseTopLevelDeclsRequest 403,574 404,189 615 0.15%
SILGen.ASTLoweringRequest 33,118 33,169 51 0.16%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILGenFunctions 4,241,972 4,245,422 3,450 0.08%
SILModule.NumSILGenGlobalVariables 147,839 147,920 81 0.05%
SILModule.NumSILGenVtables 41,773 41,792 19 0.05%
SILModule.NumSILGenWitnessTables 286,524 286,608 84 0.03%
SILModule.NumSILOptDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILOptFunctions 4,749,091 4,752,909 3,818 0.08%
SILModule.NumSILOptGlobalVariables 149,953 150,038 85 0.06%
SILModule.NumSILOptVtables 42,394 42,413 19 0.04%
SILModule.NumSILOptWitnessTables 328,344 328,467 122 0.04%
SILOptimizer.ExecuteSILPipelineRequest 162,958 163,215 257 0.16%
SILOptimizer.LoweredSILRequest 0 0 0 0.0%
Sema.ABIMembersRequest 370,331 370,554 222 0.06%
Sema.AbstractGenericSignatureRequest 132,224 132,375 151 0.11%
Sema.AccessLevelRequest 23,296,080 23,280,506 -15,574 -0.07%
Sema.ActorIsolationRequest 50,263,857 50,229,419 -34,438 -0.07%
Sema.AllMembersRequest 205,210 205,261 51 0.02%
Sema.AnyObjectLookupRequest 225 223 -1 -0.67%
Sema.ApplyAccessNoteRequest 5,386,157 5,390,407 4,250 0.08%
Sema.AreAllStoredPropertiesDefaultInitableRequest 54,724 54,753 29 0.05%
Sema.AssociatedConformanceRequest 207,862 207,860 -1 -0.0%
Sema.AttachedPropertyWrapperTypeRequest 40,331 40,338 7 0.02%
Sema.AttachedPropertyWrappersRequest 34,784,472 34,768,460 -16,012 -0.05%
Sema.AttachedResultBuilderRequest 2,304,722 2,306,672 1,949 0.08%
Sema.BodyInitKindRequest 99,691 99,779 88 0.09%
Sema.BreakTargetRequest 8,209 8,210 1 0.01%
Sema.CXXNamespaceMemberLookup 0 0 0 0.0%
Sema.CallerSideDefaultArgExprRequest 538,019 538,647 628 0.12%
Sema.CheckDistributedFunctionRequest 80 80 0 0.0%
Sema.CheckInconsistentAccessLevelOnImport 63,718 63,769 51 0.08%
Sema.CheckInconsistentAccessLevelOnImportSameFileRequest 63,956 64,007 51 0.08%
Sema.CheckInconsistentImplementationOnlyImportsRequest 11,731 11,735 4 0.03%
Sema.CheckInconsistentSPIOnlyImportsRequest 63,956 64,007 51 0.08%
Sema.CheckInconsistentWeakLinkedImportsRequest 11,731 11,735 4 0.03%
Sema.CheckRedeclarationRequest 2,900,813 2,902,657 1,844 0.06%
Sema.ClangCategoryLookupRequest 0 0 0 0.0%
Sema.ClangDirectLookupRequest 19,378 19,383 5 0.03%
Sema.ClangRecordMemberLookup 19,378 19,383 5 0.03%
Sema.ClassAncestryFlagsRequest 160,701 160,945 244 0.15%
Sema.ClosureEffectsRequest 170,423 170,640 217 0.13%
Sema.ClosureHasExplicitResultRequest 64,955 65,029 74 0.11%
Sema.CollectExistentialConformancesRequest 169,144 169,420 276 0.16%
Sema.CollectOverriddenDeclsRequest 19,016,008 19,001,091 -14,917 -0.08%
Sema.CompareDeclSpecializationRequest 999,387 1,000,967 1,580 0.16%
Sema.CompilerPluginLoadRequest 36 36 0 0.0%
Sema.ConditionalRequirementsRequest 1,083,188 1,083,032 -156 -0.01%
Sema.ConformanceAccessScopeRequest 270,745 270,904 159 0.06%
Sema.ConformanceHasEffectRequest 28 28 0 0.0%
Sema.ConstantValueInfoRequest 1 1 0 0.0%
Sema.ContinueTargetRequest 2,740 2,741 1 0.04%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.CustomAttrNominalRequest 31,384 31,352 -32 -0.1%
Sema.CustomAttrTypeRequest 5,002 5,002 0 0.0%
Sema.CustomRefCountingOperation 0 0 0 0.0%
Sema.CxxRecordAsSwiftType 0 0 0 0.0%
Sema.CxxRecordSemantics 69,769 69,599 -169 -0.24%
Sema.DefaultAndMaxAccessLevelRequest 141,395 141,459 64 0.05%
Sema.DefaultArgumentExprRequest 173,674 173,822 148 0.09%
Sema.DefaultArgumentInitContextRequest 925 927 2 0.27%
Sema.DefaultArgumentTypeRequest 17,822 17,858 35 0.2%
Sema.DefaultDefinitionTypeRequest 4,020 4,023 3 0.07%
Sema.DefaultInitializerIsolation 1,563,887 1,565,081 1,193 0.08%
Sema.DefaultTypeRequest 819,226 820,391 1,165 0.14%
Sema.DerivativeAttrOriginalDeclRequest 0 0 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.DirectLookupRequest 103,792,087 103,814,268 22,181 0.02%
Sema.DirectOperatorLookupRequest 2,844,443 2,846,859 2,416 0.08%
Sema.DirectPrecedenceGroupLookupRequest 1,047,114 1,048,242 1,128 0.11%
Sema.DistributedModuleIsAvailableRequest 67 67 0 0.0%
Sema.DynamicallyReplacedDeclRequest 46,976,158 46,945,136 -31,022 -0.07%
Sema.EnumElementExprPatternRequest 29 29 0 0.0%
Sema.EnumRawTypeRequest 52,480 52,539 59 0.11%
Sema.EnumRawValuesRequest 31,420 31,433 13 0.04%
Sema.ExistentialConformsToSelfRequest 36,810 36,831 21 0.06%
Sema.ExpandAccessorMacros 1,261,440 1,262,855 1,414 0.11%
Sema.ExpandBodyMacroRequest 537,143 537,871 728 0.14%
Sema.ExpandChildTypeRefinementContextsRequest 890,979 891,525 546 0.06%
Sema.ExpandExtensionMacros 1,290,105 1,288,947 -1,158 -0.09%
Sema.ExpandMacroExpansionDeclRequest 0 0 0 0.0%
Sema.ExpandMacroExpansionExprRequest 678 678 0 0.0%
Sema.ExpandMemberAttributeMacros 84,573,926 84,423,966 -149,960 -0.18%
Sema.ExpandPeerMacroRequest 61,652,975 61,614,507 -38,468 -0.06%
Sema.ExpandPreambleMacroRequest 537,143 537,871 728 0.14%
Sema.ExpandSynthesizedMemberMacroRequest 369,269 369,510 240 0.07%
Sema.ExplicitCaughtTypeRequest 38,260 38,353 93 0.24%
Sema.ExprPatternMatchRequest 114,485 114,490 5 0.0%
Sema.ExtendedNominalRequest 829,769 830,743 973 0.12%
Sema.ExtendedTypeRequest 259,297 259,659 362 0.14%
Sema.ExternalMacroDefinitionRequest 86 86 0 0.0%
Sema.FragileFunctionKindRequest 3,583,923 3,586,679 2,756 0.08%
Sema.FunctionOperatorRequest 19,628 19,699 70 0.36%
Sema.GenericParamListRequest 8,723,832 8,682,102 -41,730 -0.48%
Sema.GenericSignatureRequest 4,215,198 4,179,707 -35,491 -0.84%
Sema.GetDestructorRequest 48,320 48,380 60 0.13%
Sema.GetDistributedActorArgumentDecodingMethodRequest 19 19 0 0.0%
Sema.GetDistributedActorIDPropertyRequest 72 72 0 0.0%
Sema.GetDistributedActorImplicitCodableRequest 117 117 0 0.0%
Sema.GetDistributedActorInvocationDecoderRequest 19 19 0 0.0%
Sema.GetDistributedActorSystemPropertyRequest 63 63 0 0.0%
Sema.GetDistributedActorSystemRemoteCallFunctionRequest 40 40 0 0.0%
Sema.GetDistributedRemoteCallArgumentInitFunctionRequest 14 14 0 0.0%
Sema.GetDistributedRemoteCallTargetInitFunctionRequest 14 14 0 0.0%
Sema.GetDistributedTargetInvocationDecoderDecodeNextArgumentFunctionRequest 21 21 0 0.0%
Sema.GetDistributedTargetInvocationEncoderRecordArgumentFunctionRequest 16 16 0 0.0%
Sema.GetDistributedTargetInvocationEncoderRecordErrorTypeFunctionRequest 8 8 0 0.0%
Sema.GetDistributedTargetInvocationEncoderRecordReturnTypeFunctionRequest 13 13 0 0.0%
Sema.GetDistributedTargetInvocationResultHandlerOnReturnFunctionRequest 12 12 0 0.0%
Sema.GetDistributedThunkRequest 80 80 0 0.0%
Sema.GetSourceFileAsyncNode 142 142 0 0.0%
Sema.GlobalActorAttributeRequest 54,734,085 54,697,943 -36,141 -0.07%
Sema.GlobalActorInstanceRequest 3,054 3,042 -11 -0.38%
Sema.HasCircularInheritedProtocolsRequest 19,916 19,931 15 0.08%
Sema.HasCircularRawValueRequest 33,915 33,924 8 0.03%
Sema.HasDefaultInitRequest 131,033 131,107 73 0.06%
Sema.HasDynamicCallableAttributeRequest 37,140 37,154 14 0.04%
Sema.HasDynamicMemberLookupAttributeRequest 664,843 665,311 468 0.07%
Sema.HasImportsMatchingFlagRequest 793,011 794,241 1,230 0.16%
Sema.HasInitAccessorRequest 6,894,809 6,892,414 -2,395 -0.03%
Sema.HasIsolatedSelfRequest 61,016,828 60,978,495 -38,333 -0.06%
Sema.HasMemberwiseInitRequest 74,717 74,736 19 0.03%
Sema.HasSelfOrAssociatedTypeRequirementsRequest 17,021 17,046 24 0.14%
Sema.HasStorageRequest 19,315,885 19,301,197 -14,688 -0.08%
Sema.HasUserDefinedDesignatedInitRequest 131,037 131,111 74 0.06%
Sema.IDEInspectionFileRequest 0 0 0 0.0%
Sema.ImplementsAttrProtocolRequest 0 0 0 0.0%
Sema.ImplicitKnownProtocolConformanceRequest 286,093 286,389 296 0.1%
Sema.InferredGenericSignatureRequest 261,292 262,112 819 0.31%
Sema.InheritedDeclsReferencedRequest 10,005,971 9,952,142 -53,829 -0.54%
Sema.InheritedProtocolsRequest 957,304 955,070 -2,234 -0.23%
Sema.InheritedTypeRequest 546,544 547,478 934 0.17%
Sema.InitAccessorPropertiesRequest 89,344 89,390 46 0.05%
Sema.InitAccessorReferencedVariablesRequest 0 0 0 0.0%
Sema.InitKindRequest 256,530 256,734 204 0.08%
Sema.InterfaceTypeRequest 29,325,616 29,254,750 -70,866 -0.24%
Sema.InvertibleAnnotationRequest 1,329,230 1,329,013 -217 -0.02%
Sema.IsABICompatibleOverrideRequest 459,623 459,780 157 0.03%
Sema.IsAccessorTransparentRequest 789,721 789,982 261 0.03%
Sema.IsActorRequest 3,049,517 3,044,365 -5,152 -0.17%
Sema.IsCCompatibleFuncDeclRequest 0 0 0 0.0%
Sema.IsCallAsFunctionNominalRequest 7,906 7,905 -1 -0.02%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.IsDeclRefinementOfRequest 78,792 78,888 96 0.12%
Sema.IsDefaultActorRequest 54,301 54,379 77 0.14%
Sema.IsDistributedActorRequest 3,295,872 3,290,804 -5,068 -0.15%
Sema.IsDynamicRequest 45,487,848 45,449,533 -38,315 -0.08%
Sema.IsEscapableRequest 0 0 0 0.0%
Sema.IsFinalRequest 45,350,501 45,313,164 -37,337 -0.08%
Sema.IsFunctionBodySkippedRequest 2,329,129 2,330,995 1,866 0.08%
Sema.IsGetterMutatingRequest 1,024,284 1,025,305 1,021 0.1%
Sema.IsImplicitlyUnwrappedOptionalRequest 4,905,249 4,895,511 -9,737 -0.2%
Sema.IsNonUserModuleRequest 131,373 131,367 -6 -0.0%
Sema.IsNoncopyableRequest 0 0 0 0.0%
Sema.IsObjCRequest 3,823,469 3,826,324 2,854 0.07%
Sema.IsSafeUseOfCxxDecl 0 0 0 0.0%
Sema.IsSetterMutatingRequest 928,466 929,074 607 0.07%
Sema.IsSingleValueStmtRequest 325,515 325,856 341 0.1%
Sema.IsStaticRequest 2,001,073 2,003,326 2,253 0.11%
Sema.LocalDiscriminatorsRequest 720,092 720,361 269 0.04%
Sema.LocalTypeDeclsRequest 63,956 64,007 51 0.08%
Sema.LookupAllConformancesInContextRequest 4,066,150 4,063,022 -3,128 -0.08%
Sema.LookupConformanceInModuleRequest 81,512,295 81,533,788 21,492 0.03%
Sema.LookupInModuleRequest 11,811,212 11,820,582 9,369 0.08%
Sema.LookupInfixOperatorRequest 91,879 91,961 82 0.09%
Sema.LookupIntrinsicRequest 83 83 0 0.0%
Sema.LookupPostfixOperatorRequest 74 74 0 0.0%
Sema.LookupPrecedenceGroupRequest 36,335 36,375 39 0.11%
Sema.LookupPrefixOperatorRequest 442 441 0 -0.11%
Sema.MacroDefinitionRequest 62 62 0 0.0%
Sema.MangleLocalTypeDeclRequest 3,264 3,264 0 0.0%
Sema.MemberwiseInitPropertiesRequest 89,346 89,392 46 0.05%
Sema.ModuleImplicitImportsRequest 11,731 11,735 4 0.03%
Sema.ModuleLibraryLevelRequest 22 22 0 0.0%
Sema.ModuleQualifiedLookupRequest 4,531,519 4,532,161 642 0.01%
Sema.NamedLazyMemberLoadSuccessCount 75,547,528 75,486,908 -60,620 -0.08%
Sema.NamingPatternRequest 307,808 308,348 540 0.18%
Sema.NeedsNewVTableEntryRequest 1,386,792 1,387,935 1,143 0.08%
Sema.NumAccessorBodiesSynthesized 442,823 443,053 230 0.05%
Sema.NumAccessorsSynthesized 690,773 691,453 680 0.1%
Sema.NumConformancePathsRecorded 1,108,989 1,109,024 35 0.0%
Sema.NumConformancesDeserialized 7,832,047 7,814,782 -17,265 -0.22%
Sema.NumConstraintScopes 116,628,224 116,692,391 64,167 0.06%
Sema.NumConstraintsConsideredForEdgeContraction 4,010,089 4,011,610 1,521 0.04%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.NumCyclicOneWayComponentsCollapsed 0 0 0 0.0%
Sema.NumDeclsDeserialized 117,812,768 117,737,791 -74,977 -0.06%
Sema.NumDeclsTypechecked 4,106,760 4,109,223 2,463 0.06%
Sema.NumLazyIterableDeclContexts 17,458,645 17,434,497 -24,148 -0.14%
Sema.NumLazyRequirementSignatures 1,273,718 1,272,332 -1,386 -0.11%
Sema.NumLazyRequirementSignaturesLoaded 904,756 904,157 -598 -0.07%
Sema.NumLeafScopes 93,872,607 93,923,421 50,814 0.05%
Sema.NumRequirementMachineCompletionSteps 31,054,282 31,042,694 -11,588 -0.04%
Sema.NumRequirementMachineUnifiedConcreteTerms 1,761,759 1,759,197 -2,562 -0.15%
Sema.NumRequirementMachines 2,697,351 2,697,188 -163 -0.01%
Sema.NumSwift6Errors 6,051 6,050 -1 -0.02%
Sema.NumTypesDeserialized 31,624,017 31,610,889 -13,128 -0.04%
Sema.NumUnloadedLazyIterableDeclContexts 13,057,292 13,065,674 8,382 0.06%
Sema.ObjCInterfaceAndImplementationRequest 2,810,826 2,808,984 -1,842 -0.07%
Sema.OpaqueReadOwnershipRequest 635,853 636,549 696 0.11%
Sema.OpaqueResultTypeRequest 1,015 1,015 0 0.0%
Sema.OperatorPrecedenceGroupRequest 921 923 2 0.22%
Sema.OverriddenDeclsRequest 28,519,035 28,503,573 -15,462 -0.05%
Sema.ParamSpecifierRequest 2,655,869 2,659,072 3,203 0.12%
Sema.PatternBindingCheckedAndContextualizedInitRequest 491,501 491,813 312 0.06%
Sema.PatternBindingEntryRequest 1,012,612 1,013,557 945 0.09%
Sema.PatternTypeRequest 1,198,342 1,199,536 1,193 0.1%
Sema.PolymorphicEffectKindRequest 1,293,841 1,295,161 1,320 0.1%
Sema.PolymorphicEffectRequirementsRequest 24 24 0 0.0%
Sema.PotentialMacroExpansionsInContextRequest 8,703,052 8,705,265 2,213 0.03%
Sema.PreCheckClosureBodyRequest 183,536 183,779 243 0.13%
Sema.PreCheckFunctionBodyRequest 538,965 539,612 646 0.12%
Sema.PreCheckResultBuilderRequest 1,938 1,938 0 0.0%
Sema.PreCheckReturnStmtRequest 742,767 743,562 795 0.11%
Sema.PrimaryAssociatedTypesRequest 84,424 84,470 46 0.06%
Sema.PrimarySourceFilesRequest 11,731 11,735 4 0.03%
Sema.PropertyWrapperAuxiliaryVariablesRequest 3,496,173 3,498,155 1,982 0.06%
Sema.PropertyWrapperBackingPropertyTypeRequest 40,320 40,327 7 0.02%
Sema.PropertyWrapperInitializerInfoRequest 905,643 906,178 535 0.06%
Sema.PropertyWrapperLValuenessRequest 2,653 2,653 0 0.0%
Sema.PropertyWrapperMutabilityRequest 1,016,858 1,017,864 1,006 0.1%
Sema.PropertyWrapperTypeInfoRequest 746 746 0 0.0%
Sema.ProtocolDependenciesRequest 773,253 773,192 -61 -0.01%
Sema.ProtocolRequirementsRequest 97,452 97,574 122 0.13%
Sema.ProtocolRequiresClassRequest 50,410 50,512 101 0.2%
Sema.ProvideDefaultImplForRequest 19,016,008 19,001,091 -14,917 -0.08%
Sema.QualifiedLookupRequest 12,598,361 12,594,722 -3,639 -0.03%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.RawCommentRequest 1,620,582 1,620,582 0 0.0%
Sema.ReferencedAssociatedTypesRequest 104,694 104,820 125 0.12%
Sema.RenamedDeclRequest 11,256 11,256 0 0.0%
Sema.RequirementRequest 206,795 206,956 160 0.08%
Sema.RequirementSignatureRequest 966,487 966,013 -474 -0.05%
Sema.RequiresOpaqueAccessorsRequest 2,584,068 2,587,317 3,248 0.13%
Sema.RequiresOpaqueModifyCoroutineRequest 636,363 636,936 573 0.09%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveImplicitMemberRequest 1,297,807 1,297,352 -455 -0.04%
Sema.ResolveMacroConformances 104 104 0 0.0%
Sema.ResolveMacroRequest 35,846 35,814 -32 -0.09%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveRawLayoutLikeTypeRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.ResolveTypeRequest 6,708,049 6,720,733 12,684 0.19%
Sema.ResolveTypeWitnessesRequest 340,356 340,445 89 0.03%
Sema.ResolveValueWitnessesRequest 334,989 335,079 90 0.03%
Sema.ResultBuilderTypeRequest 690,496 691,282 786 0.11%
Sema.ResultTypeRequest 1,522,131 1,523,785 1,654 0.11%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.SPIGroupsRequest 10,237,144 10,236,900 -244 -0.0%
Sema.ScopedImportLookupRequest 1,502 1,502 0 0.0%
Sema.SelfAccessKindRequest 1,284,991 1,286,786 1,795 0.14%
Sema.SelfBoundsFromGenericSignatureRequest 102,411 102,435 23 0.02%
Sema.SelfBoundsFromWhereClauseRequest 2,294,211 2,294,466 255 0.01%
Sema.SemanticAvailableRangeAttrRequest 12,723 12,709 -14 -0.11%
Sema.SemanticBriefCommentRequest 231,389 231,389 0 0.0%
Sema.SemanticDeclAttrsRequest 45,342,548 45,298,455 -44,093 -0.1%
Sema.SemanticUnavailableAttrRequest 3,709,210 3,711,934 2,724 0.07%
Sema.SerializeAttrGenericSignatureRequest 962 962 0 0.0%
Sema.SetterAccessLevelRequest 354,608 355,063 455 0.13%
Sema.SimpleDidSetRequest 4,652,828 4,651,071 -1,757 -0.04%
Sema.SpecializeAttrTargetDeclRequest 3,378 3,380 2 0.06%
Sema.StorageImplInfoRequest 2,562,620 2,565,779 3,158 0.12%
Sema.StoredPropertiesAndMissingMembersRequest 81,247 81,337 90 0.11%
Sema.StoredPropertiesRequest 525,310 525,626 316 0.06%
Sema.StructuralRequirementsRequest 61,935 62,060 124 0.2%
Sema.StructuralTypeRequest 2,366 2,368 2 0.11%
Sema.SuperclassDeclRequest 654,297 654,441 144 0.02%
Sema.SuperclassTypeRequest 80,894 80,988 94 0.12%
Sema.SynthesizeAccessorRequest 690,773 691,453 680 0.1%
Sema.SynthesizeDefaultInitRequest 15,449 15,454 5 0.04%
Sema.SynthesizeMainFunctionRequest 313,476 313,666 190 0.06%
Sema.SynthesizeMemberwiseInitRequest 14,251 14,254 3 0.02%
Sema.TangentStoredPropertyRequest 0 0 0 0.0%
Sema.TypeAliasRequirementsRequest 61,935 62,060 124 0.2%
Sema.TypeCheckASTNodeAtLocRequest 0 0 0 0.0%
Sema.TypeCheckFunctionBodyRequest 1,033,156 1,034,166 1,010 0.1%
Sema.TypeCheckObjCImplementationRequest 0 0 0 0.0%
Sema.TypeCheckSourceFileRequest 63,956 64,007 51 0.08%
Sema.TypeDeclsFromWhereClauseRequest 66,336 66,361 25 0.04%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
Sema.TypeWitnessRequest 32,891 32,920 29 0.09%
Sema.USRGenerationRequest 21,227,107 21,209,161 -17,946 -0.08%
Sema.UnderlyingTypeDeclsReferencedRequest 601,989 597,550 -4,439 -0.74%
Sema.UnderlyingTypeRequest 68,157 68,241 84 0.12%
Sema.UniqueUnderlyingTypeSubstitutionsRequest 1,654 1,654 0 0.0%
Sema.UnqualifiedLookupRequest 8,598,693 8,610,118 11,425 0.13%
Sema.ValidatePrecedenceGroupRequest 330,874 331,270 396 0.12%
Sema.ValueWitnessRequest 96,293 96,438 145 0.15%
TBDGen.APIGenRequest 0 0 0 0.0%
TBDGen.GenerateTBDRequest 0 0 0 0.0%
TBDGen.PublicSymbolsRequest 31,802 31,853 51 0.16%
TBDGen.SymbolSourceMapRequest 0 0 0 0.0%

Release

release brief

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (2)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 101,667,017,640,969 101,171,348,874,916 -495,668,766,053 -0.49%
LLVM.NumLLVMBytesOutput 2,649,936,328 2,649,952,508 16,180 0.0%

release detailed

Regressed (0)
name old new delta delta_pct
Improved (6)
name old new delta delta_pct
AST.NumReferencedMemberNames 4,506 4,410 -96 -2.13% ✅
AST.NumSourceLinesPerSecond 344,456 340,826 -3,629 -1.05% ✅
AST.NumTotalClangImportedEntities 455,727 395,033 -60,694 -13.32% ✅
Frontend.MaxMallocUsage 292,385,664,968 287,980,221,360 -4,405,443,608 -1.51% ✅
Sema.InheritsSuperclassInitializersRequest 14,591 14,393 -198 -1.36% ✅
Sema.UnderlyingTypeDeclsReferencedRequest 89,246 88,176 -1,070 -1.2% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (347)
name old new delta delta_pct
AST.ImportSetCacheHit 2,119,120 2,119,084 -36 -0.0%
AST.ImportSetCacheMiss 90,932 90,926 -6 -0.01%
AST.ImportSetFoldHit 45,101 45,095 -6 -0.01%
AST.ImportSetFoldMiss 45,831 45,831 0 0.0%
AST.ModuleShadowCacheHit 11,754 11,754 0 0.0%
AST.ModuleShadowCacheMiss 2,150 2,150 0 0.0%
AST.ModuleVisibilityCacheHit 47,957,854 47,957,864 10 0.0%
AST.ModuleVisibilityCacheMiss 72,380 72,350 -30 -0.04%
AST.NumASTBytesAllocated 13,683,341,924 13,592,900,837 -90,441,087 -0.66%
AST.NumASTScopeExpansions 4,454,631 4,454,631 0 0.0%
AST.NumASTScopeLookups 6,068,374 6,068,364 -10 -0.0%
AST.NumDecls 185,147 185,147 0 0.0%
AST.NumDependencies 32,447 32,447 0 0.0%
AST.NumIncrementalDependencies 0 0 0 0.0%
AST.NumLinkLibraries 0 0 0 0.0%
AST.NumLoadedModules 37,553 37,553 0 0.0%
AST.NumLocalTypeDecls 399 399 0 0.0%
AST.NumMacroPluginDependencies 6 6 0 0.0%
AST.NumModuleLookupClassMember 7,412 7,412 0 0.0%
AST.NumModuleLookupValue 47,399,697 47,399,008 -689 -0.0%
AST.NumObjCMethods 18,657 18,657 0 0.0%
AST.NumOperators 500 500 0 0.0%
AST.NumPrecedenceGroups 90 90 0 0.0%
AST.NumReferencedDynamicNames 0 0 0 0.0%
AST.NumReferencedTopLevelNames 352 352 0 0.0%
AST.NumSourceBuffers 42,483 42,483 0 0.0%
AST.NumSourceLines 6,938,883 6,938,883 0 0.0%
Frontend.NumInstructionsExecuted 101,667,017,640,969 101,171,348,874,916 -495,668,766,053 -0.49%
Frontend.NumProcessFailures 11 11 0 0.0%
IRGen.IRGenRequest 12 12 0 0.0%
IRGen.OptimizedIRRequest 0 0 0 0.0%
IRGen.SymbolObjectCodeRequest 0 0 0 0.0%
IRModule.NumGOTEntries 316,643 316,643 0 0.0%
IRModule.NumIRAliases 208,927 208,927 0 0.0%
IRModule.NumIRBasicBlocks 7,297,314 7,297,314 0 0.0%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRFunctions 3,655,333 3,655,333 0 0.0%
IRModule.NumIRGlobals 3,949,803 3,949,803 0 0.0%
IRModule.NumIRIFuncs 0 0 0 0.0%
IRModule.NumIRInsts 60,086,729 60,086,729 0 0.0%
IRModule.NumIRNamedMetaData 122,120 122,120 0 0.0%
IRModule.NumIRValueSymbols 7,640,857 7,640,857 0 0.0%
LLVM.NumLLVMBytesOutput 2,649,936,328 2,649,952,508 16,180 0.0%
Parse.ExportedSourceFileRequest 60 60 0 0.0%
Parse.IDEInspectionSecondPassRequest 0 0 0 0.0%
Parse.NumFunctionsParsed 434,312 434,312 0 0.0%
Parse.NumIterableDeclContextParsed 139,226 139,226 0 0.0%
Parse.ParseAbstractFunctionBodyRequest 365,134 365,134 0 0.0%
Parse.ParseMembersRequest 1,835 1,835 0 0.0%
Parse.ParseSourceFileRequest 33,201 33,201 0 0.0%
Parse.ParseTopLevelDeclsRequest 32,531 32,531 0 0.0%
SILGen.ASTLoweringRequest 1,380 1,380 0 0.0%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 415 415 0 0.0%
SILModule.NumSILGenFunctions 1,700,254 1,700,254 0 0.0%
SILModule.NumSILGenGlobalVariables 68,472 68,472 0 0.0%
SILModule.NumSILGenVtables 18,377 18,377 0 0.0%
SILModule.NumSILGenWitnessTables 124,266 124,266 0 0.0%
SILModule.NumSILOptDefaultWitnessTables 415 415 0 0.0%
SILModule.NumSILOptFunctions 1,489,122 1,489,122 0 0.0%
SILModule.NumSILOptGlobalVariables 53,506 53,506 0 0.0%
SILModule.NumSILOptVtables 26,056 26,056 0 0.0%
SILModule.NumSILOptWitnessTables 124,351 124,351 0 0.0%
SILOptimizer.ExecuteSILPipelineRequest 6,892 6,892 0 0.0%
SILOptimizer.LoweredSILRequest 0 0 0 0.0%
Sema.ABIMembersRequest 146,589 146,589 0 0.0%
Sema.AbstractGenericSignatureRequest 77,990 77,990 0 0.0%
Sema.AccessLevelRequest 2,355,071 2,355,071 0 0.0%
Sema.ActorIsolationRequest 4,034,652 4,034,652 0 0.0%
Sema.AllMembersRequest 135,936 135,936 0 0.0%
Sema.AnyObjectLookupRequest 238 238 0 0.0%
Sema.ApplyAccessNoteRequest 2,449,084 2,449,084 0 0.0%
Sema.AreAllStoredPropertiesDefaultInitableRequest 17,471 17,471 0 0.0%
Sema.AssociatedConformanceRequest 88,302 88,302 0 0.0%
Sema.AttachedPropertyWrapperTypeRequest 12,800 12,800 0 0.0%
Sema.AttachedPropertyWrappersRequest 4,748,410 4,748,410 0 0.0%
Sema.AttachedResultBuilderRequest 1,197,362 1,197,362 0 0.0%
Sema.BodyInitKindRequest 77,125 77,125 0 0.0%
Sema.BreakTargetRequest 6,899 6,899 0 0.0%
Sema.CXXNamespaceMemberLookup 0 0 0 0.0%
Sema.CallerSideDefaultArgExprRequest 178,177 178,177 0 0.0%
Sema.CheckDistributedFunctionRequest 42 42 0 0.0%
Sema.CheckInconsistentAccessLevelOnImport 31,769 31,769 0 0.0%
Sema.CheckInconsistentAccessLevelOnImportSameFileRequest 31,888 31,888 0 0.0%
Sema.CheckInconsistentImplementationOnlyImportsRequest 1,391 1,391 0 0.0%
Sema.CheckInconsistentSPIOnlyImportsRequest 31,888 31,888 0 0.0%
Sema.CheckInconsistentWeakLinkedImportsRequest 1,391 1,391 0 0.0%
Sema.CheckRedeclarationRequest 1,459,688 1,459,688 0 0.0%
Sema.ClangCategoryLookupRequest 0 0 0 0.0%
Sema.ClangDirectLookupRequest 13,260 13,260 0 0.0%
Sema.ClangRecordMemberLookup 13,260 13,260 0 0.0%
Sema.ClassAncestryFlagsRequest 52,819 52,819 0 0.0%
Sema.ClosureEffectsRequest 122,536 122,536 0 0.0%
Sema.ClosureHasExplicitResultRequest 41,375 41,375 0 0.0%
Sema.CollectExistentialConformancesRequest 101,866 101,866 0 0.0%
Sema.CollectOverriddenDeclsRequest 44,656 44,656 0 0.0%
Sema.CompareDeclSpecializationRequest 550,592 550,592 0 0.0%
Sema.CompilerPluginLoadRequest 6 6 0 0.0%
Sema.ConditionalRequirementsRequest 288,295 288,295 0 0.0%
Sema.ConformanceAccessScopeRequest 108,362 108,362 0 0.0%
Sema.ConformanceHasEffectRequest 26 26 0 0.0%
Sema.ConstantValueInfoRequest 1 1 0 0.0%
Sema.ContinueTargetRequest 2,448 2,448 0 0.0%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.CustomAttrNominalRequest 11,079 11,079 0 0.0%
Sema.CustomAttrTypeRequest 1,478 1,478 0 0.0%
Sema.CustomRefCountingOperation 0 0 0 0.0%
Sema.CxxRecordAsSwiftType 0 0 0 0.0%
Sema.CxxRecordSemantics 17,976 17,917 -59 -0.33%
Sema.DefaultAndMaxAccessLevelRequest 60,255 60,255 0 0.0%
Sema.DefaultArgumentExprRequest 78,885 78,885 0 0.0%
Sema.DefaultArgumentInitContextRequest 162 162 0 0.0%
Sema.DefaultArgumentTypeRequest 9,118 9,118 0 0.0%
Sema.DefaultDefinitionTypeRequest 1,081 1,081 0 0.0%
Sema.DefaultInitializerIsolation 777,161 777,161 0 0.0%
Sema.DefaultTypeRequest 412,026 412,026 0 0.0%
Sema.DerivativeAttrOriginalDeclRequest 0 0 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.DirectLookupRequest 143,495,126 143,482,698 -12,428 -0.01%
Sema.DirectOperatorLookupRequest 1,878,610 1,878,610 0 0.0%
Sema.DirectPrecedenceGroupLookupRequest 765,224 765,224 0 0.0%
Sema.DistributedModuleIsAvailableRequest 33 33 0 0.0%
Sema.DynamicallyReplacedDeclRequest 4,248,114 4,248,114 0 0.0%
Sema.EnumElementExprPatternRequest 22 22 0 0.0%
Sema.EnumRawTypeRequest 15,441 15,441 0 0.0%
Sema.EnumRawValuesRequest 14,505 14,505 0 0.0%
Sema.ExistentialConformsToSelfRequest 7,379 7,379 0 0.0%
Sema.ExpandAccessorMacros 741,632 741,632 0 0.0%
Sema.ExpandBodyMacroRequest 460,008 460,008 0 0.0%
Sema.ExpandChildTypeRefinementContextsRequest 455,134 455,134 0 0.0%
Sema.ExpandExtensionMacros 159,041 158,983 -58 -0.04%
Sema.ExpandMacroExpansionDeclRequest 0 0 0 0.0%
Sema.ExpandMacroExpansionExprRequest 670 670 0 0.0%
Sema.ExpandMemberAttributeMacros 10,637,045 10,592,612 -44,433 -0.42%
Sema.ExpandPeerMacroRequest 4,816,660 4,816,660 0 0.0%
Sema.ExpandPreambleMacroRequest 460,008 460,008 0 0.0%
Sema.ExpandSynthesizedMemberMacroRequest 136,258 136,258 0 0.0%
Sema.ExplicitCaughtTypeRequest 27,609 27,609 0 0.0%
Sema.ExprPatternMatchRequest 80,938 80,938 0 0.0%
Sema.ExtendedNominalRequest 67,906 67,906 0 0.0%
Sema.ExtendedTypeRequest 67,631 67,631 0 0.0%
Sema.ExternalMacroDefinitionRequest 15 15 0 0.0%
Sema.FragileFunctionKindRequest 1,432,156 1,432,156 0 0.0%
Sema.FunctionOperatorRequest 9,996 9,996 0 0.0%
Sema.GenericParamListRequest 1,963,298 1,950,705 -12,593 -0.64%
Sema.GenericSignatureRequest 1,353,688 1,343,078 -10,610 -0.78%
Sema.GetDestructorRequest 19,067 19,067 0 0.0%
Sema.GetDistributedActorArgumentDecodingMethodRequest 19 19 0 0.0%
Sema.GetDistributedActorIDPropertyRequest 32 32 0 0.0%
Sema.GetDistributedActorImplicitCodableRequest 56 56 0 0.0%
Sema.GetDistributedActorInvocationDecoderRequest 19 19 0 0.0%
Sema.GetDistributedActorSystemPropertyRequest 28 28 0 0.0%
Sema.GetDistributedActorSystemRemoteCallFunctionRequest 8 8 0 0.0%
Sema.GetDistributedRemoteCallArgumentInitFunctionRequest 5 5 0 0.0%
Sema.GetDistributedRemoteCallTargetInitFunctionRequest 5 5 0 0.0%
Sema.GetDistributedTargetInvocationDecoderDecodeNextArgumentFunctionRequest 5 5 0 0.0%
Sema.GetDistributedTargetInvocationEncoderRecordArgumentFunctionRequest 5 5 0 0.0%
Sema.GetDistributedTargetInvocationEncoderRecordErrorTypeFunctionRequest 3 3 0 0.0%
Sema.GetDistributedTargetInvocationEncoderRecordReturnTypeFunctionRequest 4 4 0 0.0%
Sema.GetDistributedTargetInvocationResultHandlerOnReturnFunctionRequest 1 1 0 0.0%
Sema.GetDistributedThunkRequest 42 42 0 0.0%
Sema.GetSourceFileAsyncNode 69 69 0 0.0%
Sema.GlobalActorAttributeRequest 4,948,334 4,948,334 0 0.0%
Sema.GlobalActorInstanceRequest 508 508 0 0.0%
Sema.HasCircularInheritedProtocolsRequest 9,265 9,265 0 0.0%
Sema.HasCircularRawValueRequest 15,278 15,278 0 0.0%
Sema.HasDefaultInitRequest 43,765 43,765 0 0.0%
Sema.HasDynamicCallableAttributeRequest 13,984 13,984 0 0.0%
Sema.HasDynamicMemberLookupAttributeRequest 165,013 165,013 0 0.0%
Sema.HasImportsMatchingFlagRequest 63,125 63,125 0 0.0%
Sema.HasInitAccessorRequest 1,029,472 1,029,472 0 0.0%
Sema.HasIsolatedSelfRequest 6,354,890 6,354,890 0 0.0%
Sema.HasMemberwiseInitRequest 24,818 24,818 0 0.0%
Sema.HasMissingDesignatedInitializersRequest 20,880 20,752 -128 -0.61%
Sema.HasSelfOrAssociatedTypeRequirementsRequest 8,546 8,546 0 0.0%
Sema.HasStorageRequest 1,936,484 1,936,484 0 0.0%
Sema.HasUserDefinedDesignatedInitRequest 43,765 43,765 0 0.0%
Sema.IDEInspectionFileRequest 0 0 0 0.0%
Sema.ImplementsAttrProtocolRequest 0 0 0 0.0%
Sema.ImplicitKnownProtocolConformanceRequest 50,063 50,063 0 0.0%
Sema.InferredGenericSignatureRequest 88,009 88,009 0 0.0%
Sema.InheritedDeclsReferencedRequest 1,390,853 1,378,397 -12,456 -0.9%
Sema.InheritedProtocolsRequest 131,288 130,694 -594 -0.45%
Sema.InheritedTypeRequest 218,030 218,030 0 0.0%
Sema.InitAccessorPropertiesRequest 46,329 46,329 0 0.0%
Sema.InitAccessorReferencedVariablesRequest 0 0 0 0.0%
Sema.InitKindRequest 92,443 92,443 0 0.0%
Sema.InterfaceTypeRequest 5,483,377 5,463,503 -19,874 -0.36%
Sema.InvertibleAnnotationRequest 419,239 419,040 -199 -0.05%
Sema.IsABICompatibleOverrideRequest 213,500 213,500 0 0.0%
Sema.IsAccessorTransparentRequest 392,912 392,912 0 0.0%
Sema.IsActorRequest 433,301 431,490 -1,811 -0.42%
Sema.IsCCompatibleFuncDeclRequest 0 0 0 0.0%
Sema.IsCallAsFunctionNominalRequest 6,957 6,957 0 0.0%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.IsDeclRefinementOfRequest 38,053 38,053 0 0.0%
Sema.IsDefaultActorRequest 27,780 27,780 0 0.0%
Sema.IsDistributedActorRequest 503,040 501,229 -1,811 -0.36%
Sema.IsDynamicRequest 2,031,702 2,031,702 0 0.0%
Sema.IsEscapableRequest 0 0 0 0.0%
Sema.IsFinalRequest 1,566,342 1,566,342 0 0.0%
Sema.IsFunctionBodySkippedRequest 824,278 824,278 0 0.0%
Sema.IsGetterMutatingRequest 507,891 507,891 0 0.0%
Sema.IsImplicitlyUnwrappedOptionalRequest 2,844,753 2,841,029 -3,724 -0.13%
Sema.IsNonUserModuleRequest 338 338 0 0.0%
Sema.IsNoncopyableRequest 0 0 0 0.0%
Sema.IsObjCRequest 1,683,726 1,683,726 0 0.0%
Sema.IsSafeUseOfCxxDecl 0 0 0 0.0%
Sema.IsSetterMutatingRequest 496,903 496,903 0 0.0%
Sema.IsSingleValueStmtRequest 283,073 283,073 0 0.0%
Sema.IsStaticRequest 797,496 797,496 0 0.0%
Sema.LazyStoragePropertyRequest 572 572 0 0.0%
Sema.LocalDiscriminatorsRequest 434,724 434,724 0 0.0%
Sema.LocalTypeDeclsRequest 31,888 31,888 0 0.0%
Sema.LookupAllConformancesInContextRequest 164,746 164,746 0 0.0%
Sema.LookupConformanceInModuleRequest 45,520,379 45,512,520 -7,859 -0.02%
Sema.LookupInModuleRequest 3,648,859 3,648,798 -61 -0.0%
Sema.LookupInfixOperatorRequest 71,987 71,987 0 0.0%
Sema.LookupIntrinsicRequest 18 18 0 0.0%
Sema.LookupPostfixOperatorRequest 37 37 0 0.0%
Sema.LookupPrecedenceGroupRequest 30,230 30,230 0 0.0%
Sema.LookupPrefixOperatorRequest 211 211 0 0.0%
Sema.MacroDefinitionRequest 26 26 0 0.0%
Sema.MangleLocalTypeDeclRequest 371 371 0 0.0%
Sema.MemberwiseInitPropertiesRequest 46,329 46,329 0 0.0%
Sema.ModuleImplicitImportsRequest 1,391 1,391 0 0.0%
Sema.ModuleLibraryLevelRequest 59 59 0 0.0%
Sema.ModuleQualifiedLookupRequest 784,121 784,082 -39 -0.0%
Sema.NamedLazyMemberLoadSuccessCount 21,516,190 21,599,535 83,345 0.39%
Sema.NamingPatternRequest 61,595 61,595 0 0.0%
Sema.NeedsNewVTableEntryRequest 796,962 796,962 0 0.0%
Sema.NumAccessorBodiesSynthesized 281,399 281,399 0 0.0%
Sema.NumAccessorsSynthesized 284,666 284,666 0 0.0%
Sema.NumConformancePathsRecorded 936,407 936,407 0 0.0%
Sema.NumConformancesDeserialized 976,577 975,775 -802 -0.08%
Sema.NumConstraintScopes 66,902,435 66,902,339 -96 -0.0%
Sema.NumConstraintsConsideredForEdgeContraction 3,465,287 3,465,287 0 0.0%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.NumCyclicOneWayComponentsCollapsed 0 0 0 0.0%
Sema.NumDeclsDeserialized 14,469,057 14,468,484 -573 -0.0%
Sema.NumDeclsTypechecked 2,109,487 2,109,487 0 0.0%
Sema.NumLazyIterableDeclContexts 2,346,544 2,342,194 -4,350 -0.19%
Sema.NumLazyRequirementSignatures 161,840 161,730 -110 -0.07%
Sema.NumLazyRequirementSignaturesLoaded 124,103 124,099 -4 -0.0%
Sema.NumLeafScopes 53,466,007 53,465,970 -37 -0.0%
Sema.NumRequirementMachineCompletionSteps 4,475,146 4,475,146 0 0.0%
Sema.NumRequirementMachineUnifiedConcreteTerms 371,794 371,794 0 0.0%
Sema.NumRequirementMachines 405,388 405,388 0 0.0%
Sema.NumSwift6Errors 3,851 3,851 0 0.0%
Sema.NumTypesDeserialized 6,216,218 6,216,091 -127 -0.0%
Sema.NumUnloadedLazyIterableDeclContexts 2,165,027 2,171,036 6,009 0.28%
Sema.ObjCInterfaceAndImplementationRequest 1,470,289 1,469,765 -524 -0.04%
Sema.OpaqueReadOwnershipRequest 265,816 265,816 0 0.0%
Sema.OpaqueResultTypeRequest 420 420 0 0.0%
Sema.OperatorPrecedenceGroupRequest 433 433 0 0.0%
Sema.OverriddenDeclsRequest 3,197,277 3,197,277 0 0.0%
Sema.ParamSpecifierRequest 1,223,234 1,223,234 0 0.0%
Sema.PatternBindingCheckedAndContextualizedInitRequest 291,182 291,182 0 0.0%
Sema.PatternBindingEntryRequest 437,281 437,281 0 0.0%
Sema.PatternTypeRequest 571,387 571,387 0 0.0%
Sema.PolymorphicEffectKindRequest 706,641 706,641 0 0.0%
Sema.PolymorphicEffectRequirementsRequest 8 8 0 0.0%
Sema.PotentialMacroExpansionsInContextRequest 1,612,502 1,612,497 -5 -0.0%
Sema.PreCheckClosureBodyRequest 133,866 133,866 0 0.0%
Sema.PreCheckFunctionBodyRequest 452,263 452,263 0 0.0%
Sema.PreCheckResultBuilderRequest 1,119 1,119 0 0.0%
Sema.PreCheckReturnStmtRequest 635,139 635,139 0 0.0%
Sema.PrimaryAssociatedTypesRequest 20,016 20,016 0 0.0%
Sema.PrimarySourceFilesRequest 1,391 1,391 0 0.0%
Sema.PropertyWrapperAuxiliaryVariablesRequest 1,913,965 1,913,965 0 0.0%
Sema.PropertyWrapperBackingPropertyTypeRequest 12,800 12,800 0 0.0%
Sema.PropertyWrapperInitializerInfoRequest 495,636 495,636 0 0.0%
Sema.PropertyWrapperLValuenessRequest 946 946 0 0.0%
Sema.PropertyWrapperMutabilityRequest 505,348 505,348 0 0.0%
Sema.PropertyWrapperTypeInfoRequest 152 152 0 0.0%
Sema.ProtocolDependenciesRequest 109,719 109,719 0 0.0%
Sema.ProtocolRequirementsRequest 21,695 21,695 0 0.0%
Sema.ProtocolRequiresClassRequest 9,490 9,490 0 0.0%
Sema.ProvideDefaultImplForRequest 44,656 44,656 0 0.0%
Sema.QualifiedLookupRequest 6,126,809 6,123,984 -2,825 -0.05%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.RawCommentRequest 754,135 754,135 0 0.0%
Sema.ReferencedAssociatedTypesRequest 29,536 29,536 0 0.0%
Sema.RenamedDeclRequest 7,572 7,572 0 0.0%
Sema.RequirementRequest 86,429 86,429 0 0.0%
Sema.RequirementSignatureRequest 134,856 134,852 -4 -0.0%
Sema.RequiresOpaqueAccessorsRequest 1,789,925 1,789,925 0 0.0%
Sema.RequiresOpaqueModifyCoroutineRequest 268,919 268,919 0 0.0%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveImplicitMemberRequest 642,909 642,781 -128 -0.02%
Sema.ResolveMacroConformances 32 32 0 0.0%
Sema.ResolveMacroRequest 14,948 14,948 0 0.0%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveRawLayoutLikeTypeRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.ResolveTypeRequest 2,779,161 2,779,161 0 0.0%
Sema.ResolveTypeWitnessesRequest 141,942 141,942 0 0.0%
Sema.ResolveValueWitnessesRequest 142,355 142,355 0 0.0%
Sema.ResultBuilderTypeRequest 531,712 531,712 0 0.0%
Sema.ResultTypeRequest 585,819 585,819 0 0.0%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.SPIGroupsRequest 2,761,075 2,760,836 -239 -0.01%
Sema.ScopedImportLookupRequest 735 735 0 0.0%
Sema.SelfAccessKindRequest 461,579 461,579 0 0.0%
Sema.SelfBoundsFromGenericSignatureRequest 38,615 38,615 0 0.0%
Sema.SelfBoundsFromWhereClauseRequest 519,194 518,617 -577 -0.11%
Sema.SemanticAvailableRangeAttrRequest 6,363 6,363 0 0.0%
Sema.SemanticBriefCommentRequest 203,150 203,150 0 0.0%
Sema.SemanticDeclAttrsRequest 161,938 161,938 0 0.0%
Sema.SemanticUnavailableAttrRequest 1,521,602 1,521,602 0 0.0%
Sema.SerializeAttrGenericSignatureRequest 481 481 0 0.0%
Sema.SetterAccessLevelRequest 218,899 218,899 0 0.0%
Sema.SimpleDidSetRequest 503,381 503,381 0 0.0%
Sema.SpecializeAttrTargetDeclRequest 21,350 21,350 0 0.0%
Sema.StorageImplInfoRequest 1,796,757 1,796,757 0 0.0%
Sema.StoredPropertiesAndMissingMembersRequest 54,102 54,102 0 0.0%
Sema.StoredPropertiesRequest 174,970 174,970 0 0.0%
Sema.StructuralRequirementsRequest 10,774 10,774 0 0.0%
Sema.StructuralTypeRequest 549 549 0 0.0%
Sema.SuperclassDeclRequest 113,999 113,999 0 0.0%
Sema.SuperclassTypeRequest 25,782 25,782 0 0.0%
Sema.SynthesizeAccessorRequest 284,666 284,666 0 0.0%
Sema.SynthesizeDefaultInitRequest 3,912 3,912 0 0.0%
Sema.SynthesizeMainFunctionRequest 132,947 132,947 0 0.0%
Sema.SynthesizeMemberwiseInitRequest 4,426 4,426 0 0.0%
Sema.TangentStoredPropertyRequest 0 0 0 0.0%
Sema.TypeAliasRequirementsRequest 10,774 10,774 0 0.0%
Sema.TypeCheckASTNodeAtLocRequest 0 0 0 0.0%
Sema.TypeCheckFunctionBodyRequest 815,978 815,978 0 0.0%
Sema.TypeCheckObjCImplementationRequest 0 0 0 0.0%
Sema.TypeCheckSourceFileRequest 31,888 31,888 0 0.0%
Sema.TypeDeclsFromWhereClauseRequest 30,215 30,215 0 0.0%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
Sema.TypeWitnessRequest 10,420 10,420 0 0.0%
Sema.USRGenerationRequest 618,616 618,616 0 0.0%
Sema.UnderlyingTypeRequest 25,003 25,003 0 0.0%
Sema.UniqueUnderlyingTypeSubstitutionsRequest 636 636 0 0.0%
Sema.UnqualifiedLookupRequest 3,379,276 3,379,254 -22 -0.0%
Sema.ValidatePrecedenceGroupRequest 276,936 276,936 0 0.0%
Sema.ValueWitnessRequest 41,454 41,454 0 0.0%
TBDGen.APIGenRequest 0 0 0 0.0%
TBDGen.GenerateTBDRequest 0 0 0 0.0%
TBDGen.PublicSymbolsRequest 1,376 1,376 0 0.0%
TBDGen.SymbolSourceMapRequest 0 0 0 0.0%

@beccadax
Copy link
Contributor Author

beccadax commented Feb 5, 2024

No difference in source compatibility suite build failures vs. the baseline.

Looking at the release data, we see the expected changes:

  • Sema.NamedLazyMemberLoadSuccessCount 0.39%
  • Sema.NumUnloadedLazyIterableDeclContexts 0.28%

As well as a bunch of really nice knock-on effects:

  • Sema.NumLazyIterableDeclContexts -0.19%
  • AST.NumTotalClangImportedEntities -13.32%
  • Frontend.NumInstructionsExecuted -0.49%
  • Frontend.MaxMallocUsage -1.51%

One stat (Sema.LazyStoragePropertyRequest) regressed, but only in debug, and only by 1.34%. The topline Frontend.NumInstructionsExecuted and Frontend.MaxMallocUsage stats still decreased even in debug.

13% fewer imported decls!!!!

@beccadax beccadax requested a review from CodaFi February 5, 2024 19:22
@nkcsgexi
Copy link
Contributor

nkcsgexi commented Feb 5, 2024

Thank you for the thorough fix, Becca!

@beccadax
Copy link
Contributor Author

beccadax commented Feb 8, 2024

A few people who've worked on this code before have looked at it and nobody's had any review comments, so I'm going to assume it's good to go.

@beccadax beccadax merged commit 8621508 into swiftlang:main Feb 8, 2024
beccadax added a commit to beccadax/swift that referenced this pull request Mar 1, 2024
In rdar://123649082, a project failed to build because of the lazy import-as-member loading changes in swiftlang#71320. That project was configured in a way that broke modularization and the correct solution is to fix it, but out of an abundance of caution, add a `-disable-named-lazy-import-as-member-loading` frontend flag in case a project needs to temporarily restore the old behavior.

As a bonus, this lets us write a test to verify that lazy import-as-member loading has positive performance impact.
beccadax added a commit to beccadax/swift that referenced this pull request Mar 5, 2024
In rdar://123649082, a project failed to build because of the lazy import-as-member loading changes in swiftlang#71320. That project was configured in a way that broke modularization and the correct solution is to fix it, but out of an abundance of caution, add a `-disable-named-lazy-import-as-member-loading` frontend flag in case a project needs to temporarily restore the old behavior.

As a bonus, this lets us write a test to verify that lazy import-as-member loading has positive performance impact.
glessard pushed a commit to glessard/swift that referenced this pull request Mar 7, 2024
In rdar://123649082, a project failed to build because of the lazy import-as-member loading changes in swiftlang#71320. That project was configured in a way that broke modularization and the correct solution is to fix it, but out of an abundance of caution, add a `-disable-named-lazy-import-as-member-loading` frontend flag in case a project needs to temporarily restore the old behavior.

As a bonus, this lets us write a test to verify that lazy import-as-member loading has positive performance impact.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants