Skip to content

Commit e67e8ab

Browse files
Prespecialize common metadata (swiftlang#31925)
1 parent 446dc9f commit e67e8ab

File tree

3 files changed

+98
-0
lines changed

3 files changed

+98
-0
lines changed

stdlib/public/core/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ set(SWIFTLIB_ESSENTIAL
107107
Pointer.swift
108108
Policy.swift
109109
PrefixWhile.swift
110+
Prespecialize.swift
110111
Print.swift
111112
PtrAuth.swift
112113
Random.swift

stdlib/public/core/GroupInfo.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@
209209
"OptionSet.swift",
210210
"OutputStream.swift",
211211
"Policy.swift",
212+
"Prespecialize.swift",
212213
"Print.swift",
213214
"REPL.swift",
214215
"Random.swift",
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
@inline(never)
2+
private func consume<T>(_ t: T) {
3+
withExtendedLifetime(t) { t in }
4+
}
5+
@usableFromInline
6+
internal func _prespecialize() {
7+
consume(Array<()>.self)
8+
consume(Array<(Optional<String>, Any)>.self)
9+
consume(Array<Any>.self)
10+
consume(Array<AnyHashable>.self)
11+
consume(Array<Dictionary<String, Any>>.self)
12+
consume(Array<Dictionary<String, AnyObject>>.self)
13+
consume(Array<Int64>.self)
14+
consume(Array<Int>.self)
15+
consume(Array<Optional<Any>>.self)
16+
consume(Array<Optional<String>>.self)
17+
consume(ClosedRange<Int>.self)
18+
consume(ContiguousArray<(AnyHashable, Any)>.self)
19+
consume(ContiguousArray<(Optional<String>, Any)>.self)
20+
consume(ContiguousArray<Any>.self)
21+
consume(ContiguousArray<AnyHashable>.self)
22+
consume(ContiguousArray<Dictionary<String, AnyObject>>.self)
23+
consume(ContiguousArray<Int64>.self)
24+
consume(ContiguousArray<String>.self)
25+
consume(Dictionary<String, String>.Index.self)
26+
consume(Dictionary<String, String>.Iterator.self)
27+
consume(Dictionary<AnyHashable, Any>.self)
28+
consume(Dictionary<AnyHashable, Any>.Iterator.self)
29+
consume(Dictionary<AnyHashable, AnyHashable>.self)
30+
consume(Dictionary<AnyHashable, AnyHashable>.Iterator.self)
31+
consume(Dictionary<AnyHashable, AnyObject>.self)
32+
consume(Dictionary<String, Any>.self)
33+
consume(Dictionary<String, Any>.Iterator.self)
34+
consume(Dictionary<String, AnyHashable>.self)
35+
consume(Dictionary<String, AnyObject>.self)
36+
consume(Dictionary<String, Array<String>>.self)
37+
consume(Dictionary<String, Dictionary<String, Any>>.self)
38+
consume(Dictionary<String, String>.self)
39+
consume(Dictionary<String, UInt8>.self)
40+
consume(IndexingIterator<Array<Dictionary<String, AnyObject>>>.self)
41+
consume(IndexingIterator<Array<Int>>.self)
42+
consume(IndexingIterator<Array<String>>.self)
43+
consume(IndexingIterator<ClosedRange<Int>>.self)
44+
consume(IndexingIterator<Range<Int>>.self)
45+
consume(IndexingIterator<String.UTF8View>.self)
46+
consume(Optional<()>.self)
47+
consume(Optional<(Any, Any)>.self)
48+
consume(Optional<(AnyHashable, Any)>.self)
49+
consume(Optional<(AnyHashable, AnyHashable)>.self)
50+
consume(Optional<(CodingUserInfoKey, Any)>.self)
51+
consume(Optional<(Int64, Bool)>.self)
52+
consume(Optional<(Optional<String>, Any)>.self)
53+
consume(Optional<(String, Any)>.self)
54+
consume(Optional<(String, AnyObject)>.self)
55+
consume(Optional<(String, Array<String>)>.self)
56+
consume(Optional<(String, Int64)>.self)
57+
consume(Optional<(String, String)>.self)
58+
consume(Optional<(String, UInt8)>.self)
59+
consume(Optional<Any>.self)
60+
consume(Optional<AnyObject>.self)
61+
consume(Optional<Array<Int64>>.self)
62+
consume(Optional<Array<String>>.self)
63+
consume(Optional<Bool>.self)
64+
consume(Optional<CodingKey>.self)
65+
consume(Optional<CodingUserInfoKey>.self)
66+
consume(Optional<CustomDebugStringConvertible>.self)
67+
consume(Optional<CustomReflectable>.self)
68+
consume(Optional<CustomStringConvertible>.self)
69+
consume(Optional<Dictionary<AnyHashable, Any>>.self)
70+
consume(Optional<Dictionary<String, Any>>.self)
71+
consume(Optional<Dictionary<String, AnyObject>>.self)
72+
consume(Optional<Dictionary<String, Array<String>>>.self)
73+
consume(Optional<Dictionary<String, String>>.self)
74+
consume(Optional<Double>.self)
75+
consume(Optional<Int64>.self)
76+
consume(Optional<Int8>.self)
77+
consume(Optional<Mirror.DisplayStyle>.self)
78+
consume(Optional<Optional<Int64>>.self)
79+
consume(Optional<Optional<String>>.self)
80+
consume(Optional<Set<String>>.self)
81+
consume(Optional<TextOutputStreamable>.self)
82+
consume(Optional<UInt8>.self)
83+
consume(Optional<UnsafeBufferPointer<AnyObject>>.self)
84+
consume(PartialRangeFrom<Int>.self)
85+
consume(Range<String.Index>.self)
86+
consume(ReversedCollection<Range<Int>>.self)
87+
consume(ReversedCollection<Range<Int>>.Iterator.self)
88+
consume(Set<Int>.self)
89+
consume(Set<String>.self)
90+
consume(Set<String>.Iterator.self)
91+
consume(Set<String>.self)
92+
consume(Unmanaged<AnyObject>.self)
93+
consume(UnsafeBufferPointer<AnyObject>.self)
94+
consume(UnsafeBufferPointer<Int8>.self)
95+
consume(UnsafePointer<Int8>.self)
96+
}

0 commit comments

Comments
 (0)