Reimplement (de-)serialization of Objective-C categories to eliminate

the direct serialization of the linked-list structure. Instead, use a
scheme similar to how we handle redeclarations, with redeclaration
lists on the side. This addresses several issues:
  - In cases involving mixing and matching of many categories across
  many modules, the linked-list structure would not be consistent
  across different modules, and categories would get lost.
  - If a module is loaded after the class definition and its other
  categories have already been loaded, we wouldn't see any categories
  in the newly-loaded module.

llvm-svn: 149112
This commit is contained in:
Douglas Gregor
2012-01-27 01:47:08 +00:00
parent 7ba81830ff
commit 404cddec1b
13 changed files with 330 additions and 210 deletions

View File

@@ -36,6 +36,7 @@ ModuleFile::ModuleFile(ModuleKind Kind, unsigned Generation)
DeclOffsets(0), BaseDeclID(0),
LocalNumCXXBaseSpecifiers(0), CXXBaseSpecifiersOffsets(0),
FileSortedDecls(0), RedeclarationsMap(0), LocalNumRedeclarationsInMap(0),
ObjCCategoriesMap(0), LocalNumObjCCategoriesInMap(0),
LocalNumTypes(0), TypeOffsets(0), BaseTypeIndex(0), StatCache(0)
{}