Skip to content

Commit a960346

Browse files
Merge pull request #63412 from aschwaighofer/conditionalize_relative_pwt_entry_points
runtime: conditionally generate relative protocol witness tables entry points
2 parents d3db811 + 9e23082 commit a960346

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

include/swift/Runtime/Metadata.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,11 +354,13 @@ swift_getWitnessTable(const ProtocolConformanceDescriptor *conformance,
354354
const Metadata *type,
355355
const void * const *instantiationArgs);
356356

357+
#if SWIFT_STDLIB_USE_RELATIVE_PROTOCOL_WITNESS_TABLES
357358
SWIFT_RUNTIME_EXPORT
358359
const RelativeWitnessTable *
359360
swift_getWitnessTableRelative(const ProtocolConformanceDescriptor *conformance,
360361
const Metadata *type,
361362
const void * const *instantiationArgs);
363+
#endif
362364

363365
/// Retrieve an associated type witness from the given witness table.
364366
///
@@ -375,14 +377,15 @@ MetadataResponse swift_getAssociatedTypeWitness(
375377
const Metadata *conformingType,
376378
const ProtocolRequirement *reqBase,
377379
const ProtocolRequirement *assocType);
380+
#if SWIFT_STDLIB_USE_RELATIVE_PROTOCOL_WITNESS_TABLES
378381
SWIFT_RUNTIME_EXPORT SWIFT_CC(swift)
379382
MetadataResponse swift_getAssociatedTypeWitnessRelative(
380383
MetadataRequest request,
381384
RelativeWitnessTable *wtable,
382385
const Metadata *conformingType,
383386
const ProtocolRequirement *reqBase,
384387
const ProtocolRequirement *assocType);
385-
388+
#endif
386389
/// Retrieve an associated conformance witness table from the given witness
387390
/// table.
388391
///
@@ -401,13 +404,15 @@ const WitnessTable *swift_getAssociatedConformanceWitness(
401404
const ProtocolRequirement *reqBase,
402405
const ProtocolRequirement *assocConformance);
403406

407+
#if SWIFT_STDLIB_USE_RELATIVE_PROTOCOL_WITNESS_TABLES
404408
SWIFT_RUNTIME_EXPORT SWIFT_CC(swift)
405409
const RelativeWitnessTable *swift_getAssociatedConformanceWitnessRelative(
406410
RelativeWitnessTable *wtable,
407411
const Metadata *conformingType,
408412
const Metadata *assocType,
409413
const ProtocolRequirement *reqBase,
410414
const ProtocolRequirement *assocConformance);
415+
#endif
411416

412417
/// Determine whether two protocol conformance descriptors describe the same
413418
/// conformance of a type to a protocol.

stdlib/public/runtime/Metadata.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5368,6 +5368,7 @@ swift::swift_getWitnessTable(const ProtocolConformanceDescriptor *conformance,
53685368
return uniqueForeignWitnessTableRef(result.second);
53695369
}
53705370

5371+
#if SWIFT_STDLIB_USE_RELATIVE_PROTOCOL_WITNESS_TABLES
53715372
namespace {
53725373

53735374
/// A cache-entry type suitable for use with LockingConcurrentMap.
@@ -5644,6 +5645,7 @@ swift::swift_getWitnessTableRelative(const ProtocolConformanceDescriptor *confor
56445645
return reinterpret_cast<RelativeWitnessTable*>(((uintptr_t)table) |
56455646
(uintptr_t)0x1);
56465647
}
5648+
#endif
56475649

56485650
/// Find the name of the associated type with the given descriptor.
56495651
static StringRef findAssociatedTypeName(const ProtocolDescriptor *protocol,
@@ -5858,6 +5860,7 @@ RelativeWitnessTable *swift::lookThroughOptionalConditionalWitnessTable(
58585860
return table;
58595861
}
58605862

5863+
#if SWIFT_STDLIB_USE_RELATIVE_PROTOCOL_WITNESS_TABLES
58615864
SWIFT_CC(swift)
58625865
static MetadataResponse
58635866
swift_getAssociatedTypeWitnessRelativeSlowImpl(
@@ -5954,6 +5957,7 @@ swift::swift_getAssociatedTypeWitnessRelative(MetadataRequest request,
59545957
conformingType, reqBase,
59555958
assocType);
59565959
}
5960+
#endif
59575961

59585962
using AssociatedConformanceWitness = std::atomic<void *>;
59595963

@@ -6098,6 +6102,7 @@ const WitnessTable *swift::swift_getAssociatedConformanceWitness(
60986102
assocConformance);
60996103
}
61006104

6105+
#if SWIFT_STDLIB_USE_RELATIVE_PROTOCOL_WITNESS_TABLES
61016106
SWIFT_CC(swift)
61026107
static const RelativeWitnessTable *swift_getAssociatedConformanceWitnessRelativeSlowImpl(
61036108
RelativeWitnessTable *wtable,
@@ -6186,6 +6191,7 @@ const RelativeWitnessTable *swift::swift_getAssociatedConformanceWitnessRelative
61866191
assocType, reqBase,
61876192
assocConformance);
61886193
}
6194+
#endif
61896195

61906196
bool swift::swift_compareProtocolConformanceDescriptors(
61916197
const ProtocolConformanceDescriptor *lhs,

0 commit comments

Comments
 (0)