Reflection: Fix class layout start offset calculations

Fixes <rdar://problem/29115967>.
This commit is contained in:
Slava Pestov
2016-11-09 18:36:01 -08:00
parent 83692bb398
commit db79762c3b
29 changed files with 262 additions and 104 deletions

View File

@@ -93,16 +93,13 @@ public:
// by looking at the size of the superclass
bool valid;
unsigned size, align;
auto super =
this->readSuperClassFromClassMetadata(MetadataAddress);
if (super) {
std::tie(valid, size, align) =
this->readInstanceSizeAndAlignmentFromClassMetadata(super);
std::tie(valid, size, align) =
this->readInstanceSizeAndAlignmentFromClassMetadata(MetadataAddress);
// Perform layout
if (valid)
TI = TC.getClassInstanceTypeInfo(TR, size, align);
// Perform layout
if (valid)
TI = TC.getClassInstanceTypeInfo(TR, size, align);
}
break;
}
default: