Add protocol witness tables to existential metatype

layouts.  Introduce new SIL instructions to initialize
and open existential metatype values.

Don't actually, y'know, lift any of the restriction on
existential metatypes; just pointlessly burn extra
memory storing them.

Swift SVN r22592
This commit is contained in:
John McCall
2014-10-08 01:20:13 +00:00
parent d39d5702e9
commit 89e60f31aa
31 changed files with 1276 additions and 501 deletions

View File

@@ -113,6 +113,7 @@ static bool isTransitiveEscapeInst(SILInstruction *Inst) {
case ValueKind::InitBlockStorageHeaderInst:
case ValueKind::InitEnumDataAddrInst:
case ValueKind::InitExistentialInst:
case ValueKind::InitExistentialMetatypeInst:
case ValueKind::InitExistentialRefInst:
case ValueKind::ObjCExistentialMetatypeToObjectInst:
case ValueKind::ObjCMetatypeToObjectInst:
@@ -122,6 +123,7 @@ static bool isTransitiveEscapeInst(SILInstruction *Inst) {
case ValueKind::UncheckedTrivialBitCastInst:
case ValueKind::UncheckedRefBitCastInst:
case ValueKind::OpenExistentialInst:
case ValueKind::OpenExistentialMetatypeInst:
case ValueKind::OpenExistentialRefInst:
case ValueKind::PartialApplyInst:
case ValueKind::PointerToAddressInst: