Skip to content

Commit de28cf0

Browse files
committed
Optimizer: add Context. mangle(withBoxToStackPromotedArguments)
1 parent bc7024e commit de28cf0

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

SwiftCompilerSources/Sources/Optimizer/PassManager/Context.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,12 @@ struct FunctionPassContext : MutatingContext {
412412
}
413413
}
414414

415+
func mangle(withBoxToStackPromotedArguments argIndices: [Int], from original: Function) -> String {
416+
argIndices.withBridgedArrayRef { bridgedArgIndices in
417+
String(taking: _bridged.mangleWithBoxToStackPromotedArgs(bridgedArgIndices, original.bridged))
418+
}
419+
}
420+
415421
func createGlobalVariable(name: String, type: Type, linkage: Linkage, isLet: Bool) -> GlobalVariable {
416422
let gv = name._withBridgedStringRef {
417423
_bridged.createGlobalVariable($0, type.bridged, linkage.bridged, isLet)

include/swift/SILOptimizer/OptimizerBridging.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@ struct BridgedPassContext {
254254
BridgedOwnedString mangleWithClosureArgs(BridgedValueArray closureArgs,
255255
BridgedArrayRef closureArgIndices,
256256
BridgedFunction applySiteCallee) const;
257+
BridgedOwnedString mangleWithBoxToStackPromotedArgs(BridgedArrayRef bridgedPromotedArgIndices,
258+
BridgedFunction bridgedOriginalFunction) const;
257259

258260
SWIFT_IMPORT_UNSAFE BridgedGlobalVar createGlobalVariable(BridgedStringRef name, BridgedType type,
259261
BridgedLinkage linkage, bool isLet) const;

lib/SILOptimizer/Utils/OptimizerBridging.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,20 @@ BridgedOwnedString BridgedPassContext::mangleWithClosureArgs(
336336
return BridgedOwnedString(mangler.mangle());
337337
}
338338

339+
BridgedOwnedString BridgedPassContext::mangleWithBoxToStackPromotedArgs(
340+
BridgedArrayRef bridgedPromotedArgIndices,
341+
BridgedFunction bridgedOriginalFunction
342+
) const {
343+
auto *original = bridgedOriginalFunction.getFunction();
344+
Mangle::FunctionSignatureSpecializationMangler mangler(original->getASTContext(),
345+
Demangle::SpecializationPass::AllocBoxToStack,
346+
original->getSerializedKind(), original);
347+
for (SwiftInt i : bridgedPromotedArgIndices.unbridged<SwiftInt>()) {
348+
mangler.setArgumentBoxToStack((unsigned)i);
349+
}
350+
return BridgedOwnedString(mangler.mangle());
351+
}
352+
339353
BridgedGlobalVar BridgedPassContext::createGlobalVariable(BridgedStringRef name, BridgedType type, BridgedLinkage linkage, bool isLet) const {
340354
auto *global = SILGlobalVariable::create(
341355
*invocation->getPassManager()->getModule(),

0 commit comments

Comments
 (0)