[Runtime] Rename CVW entry points for compatibility

This commit is contained in:
Dario Rexin
2025-01-27 10:37:55 -08:00
parent 92bebee121
commit e15bdc132c
13 changed files with 428 additions and 180 deletions

View File

@@ -899,8 +899,8 @@ static void handleRefCountsDestroy(const Metadata *metadata,
}
}
static void swift_generic_destroyImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
static void swift_cvw_destroyImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
const uint8_t *layoutStr = metadata->getLayoutString();
LayoutStringReader1 reader{layoutStr + layoutStringHeaderSize};
uintptr_t addrOffset = 0;
@@ -914,7 +914,8 @@ static void swift_generic_destroyImpl(swift::OpaqueValue *address,
#endif
}
void swift::swift_generic_arrayDestroy(swift::OpaqueValue *address, size_t count, size_t stride, const Metadata *metadata) {
void swift::swift_cvw_arrayDestroy(swift::OpaqueValue *address, size_t count,
size_t stride, const Metadata *metadata) {
const uint8_t *layoutStr = metadata->getLayoutString();
uint8_t *addr = (uint8_t *)address;
for (size_t i = 0; i < count; i++) {
@@ -1160,9 +1161,8 @@ static void handleRefCountsInitWithCopy(const Metadata *metadata,
}
static swift::OpaqueValue *
swift_generic_initWithCopyImpl(swift::OpaqueValue *_dest,
swift::OpaqueValue *_src,
const Metadata *metadata) {
swift_cvw_initWithCopyImpl(swift::OpaqueValue *_dest, swift::OpaqueValue *_src,
const Metadata *metadata) {
const uint8_t *layoutStr = metadata->getLayoutString();
LayoutStringReader1 reader{layoutStr + layoutStringHeaderSize};
uintptr_t addrOffset = 0;
@@ -1181,10 +1181,10 @@ swift_generic_initWithCopyImpl(swift::OpaqueValue *_dest,
return _dest;
}
void swift::swift_generic_arrayInitWithCopy(swift::OpaqueValue *_dest,
swift::OpaqueValue *_src,
size_t count, size_t stride,
const Metadata *metadata) {
void swift::swift_cvw_arrayInitWithCopy(swift::OpaqueValue *_dest,
swift::OpaqueValue *_src, size_t count,
size_t stride,
const Metadata *metadata) {
const uint8_t *layoutStr = metadata->getLayoutString();
uint8_t *dest = (uint8_t *)_dest;
uint8_t *src = (uint8_t *)_src;
@@ -1319,9 +1319,8 @@ static void handleRefCountsInitWithTake(const Metadata *metadata,
}
static swift::OpaqueValue *
swift_generic_initWithTakeImpl(swift::OpaqueValue *_dest,
swift::OpaqueValue *_src,
const Metadata *metadata) {
swift_cvw_initWithTakeImpl(swift::OpaqueValue *_dest, swift::OpaqueValue *_src,
const Metadata *metadata) {
if (SWIFT_LIKELY(metadata->getValueWitnesses()->isBitwiseTakable())) {
size_t size = metadata->vw_size();
memcpy(_dest, _src, size);
@@ -2072,9 +2071,9 @@ static void multiPayloadEnumFNAssignWithCopy(const Metadata *metadata,
}
static swift::OpaqueValue *
swift_generic_assignWithCopyImpl(swift::OpaqueValue *_dest,
swift::OpaqueValue *_src,
const Metadata *metadata) {
swift_cvw_assignWithCopyImpl(swift::OpaqueValue *_dest,
swift::OpaqueValue *_src,
const Metadata *metadata) {
uint8_t *dest = (uint8_t *)_dest;
uint8_t *src = (uint8_t *)_src;
const uint8_t *layoutStr = metadata->getLayoutString();
@@ -2093,10 +2092,10 @@ swift_generic_assignWithCopyImpl(swift::OpaqueValue *_dest,
return _dest;
}
void swift::swift_generic_arrayAssignWithCopy(swift::OpaqueValue *_dest,
swift::OpaqueValue *_src,
size_t count, size_t stride,
const Metadata *metadata) {
void swift::swift_cvw_arrayAssignWithCopy(swift::OpaqueValue *_dest,
swift::OpaqueValue *_src,
size_t count, size_t stride,
const Metadata *metadata) {
uint8_t *dest = (uint8_t *)_dest;
uint8_t *src = (uint8_t *)_src;
const uint8_t *layoutStr = metadata->getLayoutString();
@@ -2114,19 +2113,19 @@ void swift::swift_generic_arrayAssignWithCopy(swift::OpaqueValue *_dest,
}
static swift::OpaqueValue *
swift_generic_assignWithTakeImpl(swift::OpaqueValue *dest,
swift::OpaqueValue *src,
const Metadata *metadata) {
swift_generic_destroy(dest, metadata);
return swift_generic_initWithTake(dest, src, metadata);
swift_cvw_assignWithTakeImpl(swift::OpaqueValue *dest, swift::OpaqueValue *src,
const Metadata *metadata) {
swift_cvw_destroy(dest, metadata);
return swift_cvw_initWithTake(dest, src, metadata);
}
extern "C" unsigned swift_singletonEnum_getEnumTag(swift::OpaqueValue *address,
const Metadata *metadata) {
extern "C" unsigned
swift_cvw_singletonEnum_getEnumTag(swift::OpaqueValue *address,
const Metadata *metadata) {
return 0;
}
extern "C" void swift_singletonEnum_destructiveInjectEnumTag(
extern "C" void swift_cvw_singletonEnum_destructiveInjectEnumTag(
swift::OpaqueValue *address, unsigned tag, const Metadata *metadata) {
return;
}
@@ -2159,8 +2158,8 @@ static inline T handleSinglePayloadEnumSimpleTag(
xiTagBytesOffset, payloadSize, numExtraTagBytes);
}
static unsigned swift_enumSimple_getEnumTagImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
static unsigned swift_cvw_enumSimple_getEnumTagImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
auto addr = reinterpret_cast<uint8_t *>(address);
LayoutStringReader reader{metadata->getLayoutString(),
layoutStringHeaderSize + sizeof(uint64_t)};
@@ -2202,7 +2201,7 @@ static unsigned swift_enumSimple_getEnumTagImpl(swift::OpaqueValue *address,
reader, addr, extraTagBytesHandler, xihandler);
}
static void swift_enumSimple_destructiveInjectEnumTagImpl(
static void swift_cvw_enumSimple_destructiveInjectEnumTagImpl(
swift::OpaqueValue *address, unsigned tag, const Metadata *metadata) {
auto addr = reinterpret_cast<uint8_t *>(address);
LayoutStringReader reader{metadata->getLayoutString(),
@@ -2260,8 +2259,8 @@ static void swift_enumSimple_destructiveInjectEnumTagImpl(
xihandler);
}
static unsigned swift_enumFn_getEnumTagImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
static unsigned swift_cvw_enumFn_getEnumTagImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
auto addr = reinterpret_cast<const uint8_t *>(address);
LayoutStringReader reader{metadata->getLayoutString(),
layoutStringHeaderSize + sizeof(uint64_t)};
@@ -2271,8 +2270,8 @@ static unsigned swift_enumFn_getEnumTagImpl(swift::OpaqueValue *address,
}
static unsigned
swift_multiPayloadEnumGeneric_getEnumTagImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
swift_cvw_multiPayloadEnumGeneric_getEnumTagImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
auto addr = reinterpret_cast<const uint8_t *>(address);
LayoutStringReader1 reader{metadata->getLayoutString() +
layoutStringHeaderSize + sizeof(uint64_t)};
@@ -2299,7 +2298,7 @@ swift_multiPayloadEnumGeneric_getEnumTagImpl(swift::OpaqueValue *address,
}
}
static void swift_multiPayloadEnumGeneric_destructiveInjectEnumTagImpl(
static void swift_cvw_multiPayloadEnumGeneric_destructiveInjectEnumTagImpl(
swift::OpaqueValue *address, unsigned tag, const Metadata *metadata) {
auto addr = reinterpret_cast<uint8_t *>(address);
LayoutStringReader reader{metadata->getLayoutString(),
@@ -2363,8 +2362,8 @@ static inline T handleSinglePayloadEnumGenericTag(
}
static unsigned
swift_singlePayloadEnumGeneric_getEnumTagImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
swift_cvw_singlePayloadEnumGeneric_getEnumTagImpl(swift::OpaqueValue *address,
const Metadata *metadata) {
auto addr = reinterpret_cast<uint8_t *>(address);
LayoutStringReader reader{metadata->getLayoutString(),
layoutStringHeaderSize + sizeof(uint64_t)};
@@ -2404,7 +2403,7 @@ swift_singlePayloadEnumGeneric_getEnumTagImpl(swift::OpaqueValue *address,
reader, addr, extraTagBytesHandler, xihandler);
}
static void swift_singlePayloadEnumGeneric_destructiveInjectEnumTagImpl(
static void swift_cvw_singlePayloadEnumGeneric_destructiveInjectEnumTagImpl(
swift::OpaqueValue *address, unsigned tag, const Metadata *metadata) {
auto addr = reinterpret_cast<uint8_t *>(address);
LayoutStringReader reader{metadata->getLayoutString(),
@@ -2463,12 +2462,12 @@ static void swift_singlePayloadEnumGeneric_destructiveInjectEnumTagImpl(
}
static swift::OpaqueValue *
swift_generic_initializeBufferWithCopyOfBufferImpl(swift::ValueBuffer *dest,
swift::ValueBuffer *src,
const Metadata *metadata) {
swift_cvw_initializeBufferWithCopyOfBufferImpl(swift::ValueBuffer *dest,
swift::ValueBuffer *src,
const Metadata *metadata) {
if (metadata->getValueWitnesses()->isValueInline()) {
return swift_generic_initWithCopy((swift::OpaqueValue *)dest,
(swift::OpaqueValue *)src, metadata);
return swift_cvw_initWithCopy((swift::OpaqueValue *)dest,
(swift::OpaqueValue *)src, metadata);
} else {
memcpy(dest, src, sizeof(swift::HeapObject *));
swift_retain(*(swift::HeapObject **)src);
@@ -2476,10 +2475,10 @@ swift_generic_initializeBufferWithCopyOfBufferImpl(swift::ValueBuffer *dest,
}
}
void swift::swift_resolve_resilientAccessors(uint8_t *layoutStr,
size_t layoutStrOffset,
const uint8_t *fieldLayoutStr,
const Metadata *fieldType) {
void swift::swift_cvw_resolve_resilientAccessors(uint8_t *layoutStr,
size_t layoutStrOffset,
const uint8_t *fieldLayoutStr,
const Metadata *fieldType) {
LayoutStringWriter writer{layoutStr, layoutStrOffset};
LayoutStringReader reader{fieldLayoutStr, 0};
while (true) {
@@ -2558,9 +2557,9 @@ void swift::swift_resolve_resilientAccessors(uint8_t *layoutStr,
size_t caseOffset = reader.readBytes<size_t>();
const uint8_t *caseLayoutString = fieldCasesBeginOffset +
caseOffset;
swift_resolve_resilientAccessors(layoutStr,
casesBeginOffset + caseOffset,
caseLayoutString, fieldType);
swift_cvw_resolve_resilientAccessors(layoutStr,
casesBeginOffset + caseOffset,
caseLayoutString, fieldType);
}
reader.skip(refCountBytes);
break;
@@ -2590,11 +2589,102 @@ void swift::swift_resolve_resilientAccessors(uint8_t *layoutStr,
}
}
extern "C"
void swift_generic_instantiateLayoutString(const uint8_t* layoutStr,
Metadata* type) {
extern "C" void swift_cvw_instantiateLayoutString(const uint8_t *layoutStr,
Metadata *type) {
type->setLayoutString(layoutStr);
}
// Forwarders for compatibility reasons
extern "C" void swift_generic_destroy(swift::OpaqueValue *address,
const Metadata *metadata) {
swift_cvw_destroy(address, metadata);
}
extern "C" swift::OpaqueValue *
swift_generic_assignWithCopy(swift::OpaqueValue *dest, swift::OpaqueValue *src,
const Metadata *metadata) {
return swift_cvw_assignWithCopy(dest, src, metadata);
}
extern "C" swift::OpaqueValue *
swift_generic_assignWithTake(swift::OpaqueValue *dest, swift::OpaqueValue *src,
const Metadata *metadata) {
return swift_cvw_assignWithTake(dest, src, metadata);
}
extern "C" swift::OpaqueValue *
swift_generic_initWithCopy(swift::OpaqueValue *dest, swift::OpaqueValue *src,
const Metadata *metadata) {
return swift_cvw_initWithCopy(dest, src, metadata);
}
extern "C" swift::OpaqueValue *
swift_generic_initWithTake(swift::OpaqueValue *dest, swift::OpaqueValue *src,
const Metadata *metadata) {
return swift_cvw_initWithTake(dest, src, metadata);
}
extern "C" swift::OpaqueValue *
swift_generic_initializeBufferWithCopyOfBuffer(swift::ValueBuffer *dest,
swift::ValueBuffer *src,
const Metadata *metadata) {
return swift_cvw_initializeBufferWithCopyOfBuffer(dest, src, metadata);
}
extern "C" unsigned swift_enumSimple_getEnumTag(swift::OpaqueValue *address,
const Metadata *metadata) {
return swift_cvw_enumSimple_getEnumTag(address, metadata);
}
extern "C" void swift_enumSimple_destructiveInjectEnumTag(
swift::OpaqueValue *address, unsigned tag, const Metadata *metadata) {
swift_cvw_enumSimple_destructiveInjectEnumTag(address, tag, metadata);
}
extern "C" unsigned swift_enumFn_getEnumTag(swift::OpaqueValue *address,
const Metadata *metadata) {
return swift_cvw_enumFn_getEnumTag(address, metadata);
}
extern "C" unsigned
swift_multiPayloadEnumGeneric_getEnumTag(swift::OpaqueValue *address,
const Metadata *metadata) {
return swift_cvw_multiPayloadEnumGeneric_getEnumTag(address, metadata);
}
extern "C" void swift_multiPayloadEnumGeneric_destructiveInjectEnumTag(
swift::OpaqueValue *address, unsigned tag, const Metadata *metadata) {
swift_cvw_multiPayloadEnumGeneric_destructiveInjectEnumTag(address, tag,
metadata);
}
extern "C" unsigned
swift_singlePayloadEnumGeneric_getEnumTag(swift::OpaqueValue *address,
const Metadata *metadata) {
return swift_cvw_singlePayloadEnumGeneric_getEnumTagImpl(address, metadata);
}
extern "C" void swift_singlePayloadEnumGeneric_destructiveInjectEnumTag(
swift::OpaqueValue *address, unsigned tag, const Metadata *metadata) {
swift_cvw_singlePayloadEnumGeneric_destructiveInjectEnumTag(address, tag,
metadata);
}
extern "C" unsigned swift_singletonEnum_getEnumTag(swift::OpaqueValue *address,
const Metadata *metadata) {
return 0;
}
extern "C" void swift_singletonEnum_destructiveInjectEnumTag(
swift::OpaqueValue *address, unsigned tag, const Metadata *metadata) {
return;
}
extern "C" void swift_generic_instantiateLayoutString(const uint8_t *layoutStr,
Metadata *type) {
swift_cvw_instantiateLayoutString(layoutStr, type);
}
#define OVERRIDE_CVW COMPATIBILITY_OVERRIDE
#include "../CompatibilityOverride/CompatibilityOverrideIncludePath.h"