Commits

Doug Gregor committed 8b97f911c63
Reimplement (de-)serialization of protocol conformances. Primarily, unique normal protocol conformances and reference them via a conformance ID. This eliminates the use of trailing records for normal protocol conformances and (more importantly) the cases were we would write incomplete conformances. The latter could cause problems if we ever ended up deserializing an incomplete conformance without also deserializing a complete record for that same conformance. Secondarily, simplify the way we write conformances. They are now always trailing records, and we separate out the derived conformance kinds (specialized/inherited) from either a reference to a normal conformance in the current module file (via a normal conformance ID) or via a cross-reference to a conformance in another module file (currently always a normal conformance, but this need not always be the case). As part of this, make each conformance record self-sustaining, so we don't have to push information down to the reading routines (e.g., the conforming type) to actually produce a proper conformance. This simplifies deserialization logic further. Swift SVN r26482