Skip to content

Commit 65c9828

Browse files
committed
SwiftCompilerSources: move the Context protocols from the Optimizer to the SIL module
This allows to move many SIL APIs and utilities, which require a context, to the SIL module. The SIL-part of SwiftPassInvocation is extracted into a base class SILContext which now lives in SIL. Also: simplify the begin/end-pass functions of the SwiftPassInvocation.
1 parent d0cf535 commit 65c9828

File tree

27 files changed

+1340
-1243
lines changed

27 files changed

+1340
-1243
lines changed

SwiftCompilerSources/Sources/Optimizer/Analysis/AliasAnalysis.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import SIL
1515

1616
extension FunctionPassContext {
1717
var aliasAnalysis: AliasAnalysis {
18-
let bridgedAA = _bridged.getAliasAnalysis()
18+
let bridgedAA = bridgedPassContext.getAliasAnalysis()
1919
return AliasAnalysis(bridged: bridgedAA, context: self)
2020
}
2121
}
@@ -113,15 +113,15 @@ struct AliasAnalysis {
113113
bridgedAliasAnalysis.mutableCachePointer.assumingMemoryBound(to: Cache.self).deinitialize(count: 1)
114114
},
115115
// getMemEffectsFn
116-
{ (bridgedCtxt: BridgedPassContext,
116+
{ (bridgedCtxt: BridgedContext,
117117
bridgedAliasAnalysis: BridgedAliasAnalysis,
118118
bridgedAddr: BridgedValue,
119119
bridgedInst: BridgedInstruction) -> BridgedMemoryBehavior in
120120
let aa = AliasAnalysis(bridged: bridgedAliasAnalysis, context: FunctionPassContext(_bridged: bridgedCtxt))
121121
return aa.getMemoryEffect(of: bridgedInst.instruction, on: bridgedAddr.value).bridged
122122
},
123123
// isObjReleasedFn
124-
{ (bridgedCtxt: BridgedPassContext,
124+
{ (bridgedCtxt: BridgedContext,
125125
bridgedAliasAnalysis: BridgedAliasAnalysis,
126126
bridgedObj: BridgedValue,
127127
bridgedInst: BridgedInstruction) -> Bool in
@@ -142,7 +142,7 @@ struct AliasAnalysis {
142142
},
143143

144144
// isAddrVisibleFromObj
145-
{ (bridgedCtxt: BridgedPassContext,
145+
{ (bridgedCtxt: BridgedContext,
146146
bridgedAliasAnalysis: BridgedAliasAnalysis,
147147
bridgedAddr: BridgedValue,
148148
bridgedObj: BridgedValue) -> Bool in
@@ -159,7 +159,7 @@ struct AliasAnalysis {
159159
},
160160

161161
// mayAliasFn
162-
{ (bridgedCtxt: BridgedPassContext,
162+
{ (bridgedCtxt: BridgedContext,
163163
bridgedAliasAnalysis: BridgedAliasAnalysis,
164164
bridgedLhs: BridgedValue,
165165
bridgedRhs: BridgedValue) -> Bool in

SwiftCompilerSources/Sources/Optimizer/DataStructures/Set.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protocol IntrusiveSet : CustomStringConvertible, NoReflectionChildren {
3333
/// destruct this data structure, e.g. in a `defer {}` block.
3434
struct BasicBlockSet : IntrusiveSet {
3535

36-
private let context: BridgedPassContext
36+
private let context: BridgedContext
3737
private let bridged: BridgedBasicBlockSet
3838

3939
init(_ context: some Context) {
@@ -78,7 +78,7 @@ struct BasicBlockSet : IntrusiveSet {
7878
/// destruct this data structure, e.g. in a `defer {}` block.
7979
struct ValueSet : IntrusiveSet {
8080

81-
private let context: BridgedPassContext
81+
private let context: BridgedContext
8282
private let bridged: BridgedNodeSet
8383

8484
init(_ context: some Context) {
@@ -137,7 +137,7 @@ struct ValueSet : IntrusiveSet {
137137
/// destruct this data structure, e.g. in a `defer {}` block.
138138
struct SpecificInstructionSet<InstType: Instruction> : IntrusiveSet {
139139

140-
private let context: BridgedPassContext
140+
private let context: BridgedContext
141141
private let bridged: BridgedNodeSet
142142

143143
init(_ context: some Context) {
@@ -226,7 +226,7 @@ typealias InstructionSetWithCount = SpecificInstructionSetWithCount<Instruction>
226226
/// destruct this data structure, e.g. in a `defer {}` block.
227227
struct OperandSet : IntrusiveSet {
228228

229-
private let context: BridgedPassContext
229+
private let context: BridgedContext
230230
private let bridged: BridgedOperandSet
231231

232232
init(_ context: some Context) {

SwiftCompilerSources/Sources/Optimizer/DataStructures/Stack.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,34 @@ import SIL
2626
/// destruct this data structure, e.g. in a `defer {}` block.
2727
struct Stack<Element> : CollectionLikeSequence {
2828

29-
private let bridgedContext: BridgedPassContext
30-
private var firstSlab = BridgedPassContext.Slab(nil)
31-
private var lastSlab = BridgedPassContext.Slab(nil)
29+
private let bridgedContext: BridgedContext
30+
private var firstSlab = BridgedContext.Slab(nil)
31+
private var lastSlab = BridgedContext.Slab(nil)
3232
private var endIndex: Int = 0
3333

3434
private static var slabCapacity: Int {
35-
BridgedPassContext.Slab.getCapacity() / MemoryLayout<Element>.stride
35+
BridgedContext.Slab.getCapacity() / MemoryLayout<Element>.stride
3636
}
3737

38-
private func allocate(after lastSlab: BridgedPassContext.Slab? = nil) -> BridgedPassContext.Slab {
39-
let lastSlab = lastSlab ?? BridgedPassContext.Slab(nil)
38+
private func allocate(after lastSlab: BridgedContext.Slab? = nil) -> BridgedContext.Slab {
39+
let lastSlab = lastSlab ?? BridgedContext.Slab(nil)
4040
let newSlab = bridgedContext.allocSlab(lastSlab)
4141
UnsafeMutableRawPointer(newSlab.data!).bindMemory(to: Element.self, capacity: Stack.slabCapacity)
4242
return newSlab
4343
}
4444

45-
private static func element(in slab: BridgedPassContext.Slab, at index: Int) -> Element {
45+
private static func element(in slab: BridgedContext.Slab, at index: Int) -> Element {
4646
return pointer(in: slab, at: index).pointee
4747
}
4848

49-
private static func pointer(in slab: BridgedPassContext.Slab, at index: Int) -> UnsafeMutablePointer<Element> {
49+
private static func pointer(in slab: BridgedContext.Slab, at index: Int) -> UnsafeMutablePointer<Element> {
5050
return UnsafeMutableRawPointer(slab.data!).assumingMemoryBound(to: Element.self) + index
5151
}
5252

5353
struct Iterator : IteratorProtocol {
54-
var slab: BridgedPassContext.Slab
54+
var slab: BridgedContext.Slab
5555
var index: Int
56-
let lastSlab: BridgedPassContext.Slab
56+
let lastSlab: BridgedContext.Slab
5757
let endIndex: Int
5858

5959
mutating func next() -> Element? {
@@ -146,7 +146,7 @@ extension Stack {
146146
///
147147
/// TODO: Marker should be ~Escapable.
148148
struct Marker {
149-
let slab: BridgedPassContext.Slab
149+
let slab: BridgedContext.Slab
150150
let index: Int
151151
}
152152

0 commit comments

Comments
 (0)