Merge pull request #12766 from xedin/fix-tuple-type-metadata-reader
diff --git a/include/swift/Remote/MetadataReader.h b/include/swift/Remote/MetadataReader.h
index 4313820..d8ac5a3 100644
--- a/include/swift/Remote/MetadataReader.h
+++ b/include/swift/Remote/MetadataReader.h
@@ -777,16 +777,8 @@
std::vector<BuiltType> elementTypes;
elementTypes.reserve(tupleMeta->NumElements);
- StoredPointer elementAddress = MetadataAddress +
- sizeof(TargetTupleTypeMetadata<Runtime>);
- using Element = typename TargetTupleTypeMetadata<Runtime>::Element;
- for (StoredPointer i = 0; i < tupleMeta->NumElements; ++i,
- elementAddress += sizeof(Element)) {
- Element element;
- if (!Reader->readBytes(RemoteAddress(elementAddress),
- (uint8_t*)&element, sizeof(Element)))
- return BuiltType();
-
+ for (unsigned i = 0, n = tupleMeta->NumElements; i != n; ++i) {
+ auto &element = tupleMeta->getElement(i);
if (auto elementType = readTypeFromMetadata(element.Type))
elementTypes.push_back(elementType);
else
@@ -1226,8 +1218,8 @@
if (!Reader->readInteger(RemoteAddress(numElementsAddress),
&numElements))
return nullptr;
- auto totalSize = sizeof(TargetTupleTypeMetadata<Runtime>)
- + numElements * sizeof(StoredPointer);
+ auto totalSize = sizeof(TargetTupleTypeMetadata<Runtime>) +
+ numElements * sizeof(TupleTypeMetadata::Element);
// Make sure the number of elements is reasonable
if (numElements >= 256)