Skip to content

Commit cc78c8f

Browse files
committed
Optimizer: add Context.canMakeStaticObjectReadOnly API
1 parent f3dafbf commit cc78c8f

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

SwiftCompilerSources/Sources/Optimizer/PassManager/Context.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ extension Context {
4545

4646
var moduleIsSerialized: Bool { _bridged.moduleIsSerialized() }
4747

48+
func canMakeStaticObjectReadOnly(objectType: Type) -> Bool {
49+
_bridged.canMakeStaticObjectReadOnly(objectType.bridged)
50+
}
51+
4852
func lookupDeinit(ofNominal: NominalTypeDecl) -> Function? {
4953
_bridged.lookUpNominalDeinitFunction(ofNominal.bridged).function
5054
}

include/swift/SILOptimizer/OptimizerBridging.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ struct BridgedPassContext {
265265
SwiftInt getStaticSize(BridgedType type) const;
266266
SwiftInt getStaticAlignment(BridgedType type) const;
267267
SwiftInt getStaticStride(BridgedType type) const;
268+
bool canMakeStaticObjectReadOnly(BridgedType type) const;
268269

269270
// Sets
270271

lib/SILOptimizer/PassManager/PassManager.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,6 +1729,13 @@ SwiftInt BridgedPassContext::getStaticStride(BridgedType type) const {
17291729
return integerValueFromConstant(c);
17301730
}
17311731

1732+
bool BridgedPassContext::canMakeStaticObjectReadOnly(BridgedType type) const {
1733+
if (irgen::IRGenModule *IGM = invocation->getIRGenModule()) {
1734+
return IGM->canMakeStaticObjectReadOnly(type.unbridged());
1735+
}
1736+
return false;
1737+
}
1738+
17321739
swift::SILVTable * BridgedPassContext::specializeVTableForType(BridgedType type, BridgedFunction function) const {
17331740
return ::specializeVTableForType(type.unbridged(),
17341741
function.getFunction()->getModule(),

0 commit comments

Comments
 (0)