Skip to content

Commit 806fd1b

Browse files
authored
[Runtime] Handle generic single payload enums in resilient resolve (#66849)
1 parent 3202021 commit 806fd1b

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

stdlib/public/runtime/BytecodeLayouts.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,18 @@ void swift::swift_resolve_resilientAccessors(uint8_t *layoutStr,
698698
reader.skip(3 * sizeof(size_t));
699699
break;
700700

701+
case RefCountingKind::SinglePayloadEnumGeneric: {
702+
reader.skip(sizeof(uint64_t) + // tag + offset
703+
sizeof(uint64_t) + // extra tag bytes + XI offset
704+
sizeof(size_t) + // payload size
705+
sizeof(uintptr_t) + // XI metadata
706+
sizeof(unsigned)); // num empty cases
707+
auto refCountBytes = reader.readBytes<size_t>();
708+
reader.skip(sizeof(size_t) + // bytes to skip if no payload case
709+
refCountBytes);
710+
break;
711+
}
712+
701713
case RefCountingKind::MultiPayloadEnumFN: {
702714
auto getEnumTag = readRelativeFunctionPointer<GetEnumTagFn>(reader);
703715
writer.offset = layoutStrOffset + currentOffset - layoutStringHeaderSize;

0 commit comments

Comments
 (0)