mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Rework the serialization schema for conformances and requirements.
We now schedule conformance emissions in basically the same way we do for types and declarations, which means that we'll emit them uniquely in the module file instead of redundantly at every use. This should produce substantially smaller module files overall, especially for modules that heavily use generics. It also means that we can remove all the unfortunate code to support using different abbrev codes for them in different bitcode blocks. Requirement lists are now emitted inline in the records that need them instead of as trailing records. I think this will improve space usage, but mostly it assists in eliminating the problem where abbrev codes are shared between blocks.
This commit is contained in:
@@ -203,8 +203,8 @@ private:
|
||||
/// Local DeclContexts referenced by this module.
|
||||
ArrayRef<RawBitOffset> LocalDeclContexts;
|
||||
|
||||
/// Normal protocol conformances referenced by this module.
|
||||
ArrayRef<RawBitOffset> NormalConformances;
|
||||
/// Protocol conformances referenced by this module.
|
||||
ArrayRef<RawBitOffset> Conformances;
|
||||
|
||||
/// SILLayouts referenced by this module.
|
||||
ArrayRef<RawBitOffset> SILLayouts;
|
||||
|
||||
Reference in New Issue
Block a user