[Runtime] Make swift::swift_conformsToSwiftProtocol overridable.

This is a funnel point for looking up the protocol conformance descriptor
for a given conforming type + conformance. Make it overridable in case we
need to back-deploy changes or fixes.

Implements rdar://problem/46281660.
This commit is contained in:
Doug Gregor
2018-11-27 23:37:11 -08:00
parent f9797b4eeb
commit da772e9155
4 changed files with 21 additions and 8 deletions

View File

@@ -532,10 +532,10 @@ namespace {
};
}
const ProtocolConformanceDescriptor *
swift::_conformsToSwiftProtocol(const Metadata * const type,
const ProtocolDescriptor *protocol,
StringRef module) {
static const ProtocolConformanceDescriptor *
swift_conformsToSwiftProtocolImpl(const Metadata * const type,
const ProtocolDescriptor *protocol,
StringRef module) {
auto &C = Conformances.get();
// See if we have a cached conformance. The ConcurrentMap data structure
@@ -601,7 +601,8 @@ swift::_conformsToSwiftProtocol(const Metadata * const type,
static const WitnessTable *
swift_conformsToProtocolImpl(const Metadata * const type,
const ProtocolDescriptor *protocol) {
auto description = _conformsToSwiftProtocol(type, protocol, StringRef());
auto description =
swift_conformsToSwiftProtocol(type, protocol, StringRef());
if (!description)
return nullptr;