mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
SIL: bridge Function.isDeinitBarrier back from Swift to C++ SIL
This API already existed in Swift, but not in the C++ SIL.
This commit is contained in:
@@ -214,6 +214,7 @@ static BridgedFunction::CopyEffectsFn copyEffectsFunction = nullptr;
|
||||
static BridgedFunction::GetEffectInfoFn getEffectInfoFunction = nullptr;
|
||||
static BridgedFunction::GetMemBehaviorFn getMemBehvaiorFunction = nullptr;
|
||||
static BridgedFunction::ArgumentMayReadFn argumentMayReadFunction = nullptr;
|
||||
static BridgedFunction::IsDeinitBarrierFn isDeinitBarrierFunction = nullptr;
|
||||
|
||||
SILFunction::SILFunction(
|
||||
SILModule &Module, SILLinkage Linkage, StringRef Name,
|
||||
@@ -1175,7 +1176,8 @@ void BridgedFunction::registerBridging(SwiftMetatype metatype,
|
||||
CopyEffectsFn copyEffectsFn,
|
||||
GetEffectInfoFn effectInfoFn,
|
||||
GetMemBehaviorFn memBehaviorFn,
|
||||
ArgumentMayReadFn argumentMayReadFn) {
|
||||
ArgumentMayReadFn argumentMayReadFn,
|
||||
IsDeinitBarrierFn isDeinitBarrierFn) {
|
||||
functionMetatype = metatype;
|
||||
initFunction = initFn;
|
||||
destroyFunction = destroyFn;
|
||||
@@ -1185,6 +1187,7 @@ void BridgedFunction::registerBridging(SwiftMetatype metatype,
|
||||
getEffectInfoFunction = effectInfoFn;
|
||||
getMemBehvaiorFunction = memBehaviorFn;
|
||||
argumentMayReadFunction = argumentMayReadFn;
|
||||
isDeinitBarrierFunction = isDeinitBarrierFn;
|
||||
}
|
||||
|
||||
std::pair<const char *, int> SILFunction::
|
||||
@@ -1286,6 +1289,13 @@ bool SILFunction::argumentMayRead(Operand *argOp, SILValue addr) {
|
||||
return argumentMayReadFunction({this}, {argOp}, {addr});
|
||||
}
|
||||
|
||||
bool SILFunction::isDeinitBarrier() {
|
||||
if (!isDeinitBarrierFunction)
|
||||
return true;
|
||||
|
||||
return isDeinitBarrierFunction({this});
|
||||
}
|
||||
|
||||
SourceFile *SILFunction::getSourceFile() const {
|
||||
auto declRef = getDeclRef();
|
||||
if (!declRef)
|
||||
|
||||
Reference in New Issue
Block a user