mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Remove dynamic access checks for global variables and and class properties that have been proven by earlier analysis never to conflict with nested access. This only applies "-O -enforce-exclusivity=checked" builds. By default, it is currently NFC. These are the most important improvements: RecursiveOwnedParameter -93.7% **15.75x** ReversedArray -89.1% **9.17x** ReversedDictionary -81.0% **5.28x** ArrayInClass -74.3% **3.89x** Ary3 -71.7% **3.54x** Random -66.2% **2.96x** StringWalk -63.5% **2.74x** LevenshteinDistance -55.4% **2.24x** Voronoi -50.0% **2.00x** HashTest -47.7% **1.91x** Richards -46.7% **1.88x** NopDeinit -44.8% **1.81x** Rectangles -41.3% **1.70x** MultiFileTogether -33.1% **1.50x** MultiFileSeparate -32.8% **1.49x** SetIntersect_OfObjects -26.5% **1.36x** Ary2 -22.7% **1.29x** Prims -21.9% **1.28x** PrimsSplit -21.8% **1.28x** SetExclusiveOr_OfObjects -19.4% **1.24x** ObjectAllocation -18.6% **1.23x** DropFirstAnySeqCRangeIterLazy -17.2% **1.21x** DropFirstAnySeqCRangeIter -17.2% **1.21x** Dictionary4OfObjects -16.5% **1.20x** SetUnion_OfObjects -15.3% **1.18x** DropWhileCountableRangeLazy -15.3% **1.18x** CharIndexing_[*]_Backwards -14.6% **1.17x** (all 17 variants of CharIndexing are -14%, 1.17x) CharIteration_[*]_Backwards -14.3% **1.17x** (all 17 variants of CharIteration take 14%, 1.17x) RGBHistogramOfObjects -14.2% **1.17x** DeltaBlue -13.5% **1.16x** CharacterPropertiesPrecomputed -12.4% **1.14x** DictionarySwapOfObjects -9.9% **1.11x** ClassArrayGetter -9.8% **1.11x** DictionaryGroupOfObjects -7.9% **1.09x** DictionaryRemoveOfObjects -7.2% **1.08x** Dictionary4OfObjectsLegacy -6.8% **1.07x** Havlak -6.4% **1.07x** COWTree -6.2% **1.07x** Radix2CooleyTukeyf -5.6% **1.06x**
16 lines
548 B
Swift
16 lines
548 B
Swift
// Input for access-enforcement-wmo multi-file test cases.
|
|
|
|
var internalGlobal: Int = 0
|
|
|
|
public var publicGlobal: Int = 0
|
|
|
|
public class C {
|
|
var setterProp: Int = 0 // Only modified via setter.
|
|
final var finalProp: Int = 0 // modified directly.
|
|
var inlinedProp: Int = 0 // modification via materializeForSet inlined.
|
|
var internalProp: Int = 0 // modified opaquely via materializeForSet.
|
|
var keyPathProp: Int = 0 // modified via a keypath.
|
|
final var finalKeyPathProp: Int = 0 // modified via a keypath.
|
|
public var publicProp: Int = 0
|
|
}
|