Revert "Serialization: Fix a couple of issues with serializing context params of generic SILFunctions."

This reverts commit 57ec1ee1e888b7ed61b731237218cd9529143d2d. It fixes r13984
but breaks ToT.

Swift SVN r14006
This commit is contained in:
Joe Groff
2014-02-17 20:32:04 +00:00
parent 67fd13ed66
commit 21429cbfae
4 changed files with 26 additions and 38 deletions

View File

@@ -616,8 +616,7 @@ Optional<Substitution> ModuleFile::maybeReadSubstitution(
GenericParamList *
ModuleFile::maybeGetOrReadGenericParams(serialization::DeclID genericContextID,
DeclContext *DC,
llvm::BitstreamCursor &Cursor) {
DeclContext *DC) {
if (genericContextID) {
Decl *genericContext = getDecl(genericContextID);
assert(genericContext && "loading PolymorphicFunctionType before its decl");
@@ -636,25 +635,24 @@ ModuleFile::maybeGetOrReadGenericParams(serialization::DeclID genericContextID,
return nullptr;
}
} else {
return maybeReadGenericParams(DC, Cursor);
return maybeReadGenericParams(DC);
}
}
GenericParamList *ModuleFile::maybeReadGenericParams(DeclContext *DC,
llvm::BitstreamCursor &Cursor) {
GenericParamList *ModuleFile::maybeReadGenericParams(DeclContext *DC) {
using namespace decls_block;
assert(DC && "need a context for the decls in the list");
BCOffsetRAII lastRecordOffset(Cursor);
BCOffsetRAII lastRecordOffset(DeclTypeCursor);
SmallVector<uint64_t, 8> scratch;
StringRef blobData;
auto next = Cursor.advance(AF_DontPopBlockAtEnd);
auto next = DeclTypeCursor.advance(AF_DontPopBlockAtEnd);
if (next.Kind != llvm::BitstreamEntry::Record)
return nullptr;
unsigned kind = Cursor.readRecord(next.ID, scratch, &blobData);
unsigned kind = DeclTypeCursor.readRecord(next.ID, scratch, &blobData);
if (kind != GENERIC_PARAM_LIST)
return nullptr;
@@ -672,12 +670,12 @@ GenericParamList *ModuleFile::maybeReadGenericParams(DeclContext *DC,
lastRecordOffset.reset();
bool shouldContinue = true;
auto entry = Cursor.advance(AF_DontPopBlockAtEnd);
auto entry = DeclTypeCursor.advance(AF_DontPopBlockAtEnd);
if (entry.Kind != llvm::BitstreamEntry::Record)
break;
scratch.clear();
unsigned recordID = Cursor.readRecord(entry.ID, scratch,
unsigned recordID = DeclTypeCursor.readRecord(entry.ID, scratch,
&blobData);
switch (recordID) {
case GENERIC_PARAM: {
@@ -1370,7 +1368,7 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext,
if (declOrOffset.isComplete())
break;
auto genericParams = maybeReadGenericParams(DC, DeclTypeCursor);
auto genericParams = maybeReadGenericParams(DC);
auto theStruct = new (ctx) StructDecl(SourceLoc(), getIdentifier(nameID),
SourceLoc(), { }, genericParams, DC);
@@ -1425,7 +1423,7 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext,
if (declOrOffset.isComplete())
break;
auto genericParams = maybeReadGenericParams(parent, DeclTypeCursor);
auto genericParams = maybeReadGenericParams(parent);
auto ctor = new (ctx) ConstructorDecl(ctx.Id_init, SourceLoc(),
/*argParams=*/nullptr, nullptr,
@@ -1588,7 +1586,7 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext,
// Read generic params before reading the type, because the type may
// reference generic parameters, and we want them to have a dummy
// DeclContext for now.
GenericParamList *genericParams = maybeReadGenericParams(DC, DeclTypeCursor);
GenericParamList *genericParams = maybeReadGenericParams(DC);
auto StaticSpelling = getActualStaticSpellingKind(RawStaticSpelling);
if (!StaticSpelling.hasValue()) {
@@ -1731,7 +1729,7 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext,
DidRecord = nullptr;
}
if (auto genericParams = maybeReadGenericParams(DC, DeclTypeCursor)) {
if (auto genericParams = maybeReadGenericParams(DC)) {
proto->setGenericParams(genericParams);
SmallVector<GenericTypeParamType *, 4> paramTypes;
for (auto &genericParam : *proto->getGenericParams()) {
@@ -1839,7 +1837,7 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext,
if (declOrOffset.isComplete())
break;
auto genericParams = maybeReadGenericParams(DC, DeclTypeCursor);
auto genericParams = maybeReadGenericParams(DC);
auto theClass = new (ctx) ClassDecl(SourceLoc(), getIdentifier(nameID),
SourceLoc(), { }, genericParams, DC);
@@ -1909,7 +1907,7 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext,
if (declOrOffset.isComplete())
break;
auto genericParams = maybeReadGenericParams(DC, DeclTypeCursor);
auto genericParams = maybeReadGenericParams(DC);
auto theEnum = new (ctx) EnumDecl(SourceLoc(), getIdentifier(nameID),
SourceLoc(), { }, genericParams, DC);
@@ -2587,7 +2585,7 @@ Type ModuleFile::getType(TypeID TID) {
}
GenericParamList *paramList =
maybeGetOrReadGenericParams(genericContextID, FileContext, DeclTypeCursor);
maybeGetOrReadGenericParams(genericContextID, FileContext);
assert(paramList && "missing generic params for polymorphic function");
auto Info = PolymorphicFunctionType::ExtInfo(callingConvention.getValue(),