Skip to content

Commit b4899f1

Browse files
authored
Merge pull request #12766 from xedin/fix-tuple-type-metadata-reader
2 parents a448a73 + 13f0abf commit b4899f1

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

include/swift/Remote/MetadataReader.h

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -777,16 +777,8 @@ class MetadataReader {
777777
std::vector<BuiltType> elementTypes;
778778
elementTypes.reserve(tupleMeta->NumElements);
779779

780-
StoredPointer elementAddress = MetadataAddress +
781-
sizeof(TargetTupleTypeMetadata<Runtime>);
782-
using Element = typename TargetTupleTypeMetadata<Runtime>::Element;
783-
for (StoredPointer i = 0; i < tupleMeta->NumElements; ++i,
784-
elementAddress += sizeof(Element)) {
785-
Element element;
786-
if (!Reader->readBytes(RemoteAddress(elementAddress),
787-
(uint8_t*)&element, sizeof(Element)))
788-
return BuiltType();
789-
780+
for (unsigned i = 0, n = tupleMeta->NumElements; i != n; ++i) {
781+
auto &element = tupleMeta->getElement(i);
790782
if (auto elementType = readTypeFromMetadata(element.Type))
791783
elementTypes.push_back(elementType);
792784
else
@@ -1226,8 +1218,8 @@ class MetadataReader {
12261218
if (!Reader->readInteger(RemoteAddress(numElementsAddress),
12271219
&numElements))
12281220
return nullptr;
1229-
auto totalSize = sizeof(TargetTupleTypeMetadata<Runtime>)
1230-
+ numElements * sizeof(StoredPointer);
1221+
auto totalSize = sizeof(TargetTupleTypeMetadata<Runtime>) +
1222+
numElements * sizeof(TupleTypeMetadata::Element);
12311223

12321224
// Make sure the number of elements is reasonable
12331225
if (numElements >= 256)

0 commit comments

Comments
 (0)