[IRGen+Runtime] Add support for initializeBufferWithCopyOfBuffer to layout strings (#66965)

This commit is contained in:
Dario Rexin
2023-06-27 18:05:30 -07:00
committed by GitHub
parent eec7231fae
commit ca664141cc
6 changed files with 128 additions and 2 deletions

View File

@@ -784,6 +784,20 @@ swift_singlePayloadEnumGeneric_getEnumTag(swift::OpaqueValue *address,
return 0;
}
extern "C" swift::OpaqueValue *
swift_generic_initializeBufferWithCopyOfBuffer(swift::ValueBuffer *dest,
swift::ValueBuffer *src,
const Metadata *metadata) {
if (metadata->getValueWitnesses()->isValueInline()) {
return swift_generic_initWithCopy((swift::OpaqueValue *)dest,
(swift::OpaqueValue *)src, metadata);
} else {
memcpy(dest, src, sizeof(swift::HeapObject *));
swift_retain(*(swift::HeapObject **)src);
return (swift::OpaqueValue *)&(*(swift::HeapObject **)dest)[1];
}
}
void swift::swift_resolve_resilientAccessors(uint8_t *layoutStr,
size_t layoutStrOffset,
const uint8_t *fieldLayoutStr,