mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
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:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user