mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Runtime] Rename CVW entry points for compatibility
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user