Commits

John McCall committed 7576a910097
Include access functions for the metadata and witness tables of associated types in protocol witness tables. We use the global access functions when the result isn't dependent, and a simple accessor when the result can be cheaply recovered from the conforming metadata. Otherwise, we add a cache slot to a private section of the witness table, forcing an instantiation per conformance. Like generic type metadata, concrete instantiations of generic conformances are memoized. There's a fair amount of code in this patch that can't be dynamically tested at the moment because of the widespread reliance on recursive expansion of archetypes / dependent types. That's something we're now theoretically in a position to change, and as we do so, we'll test more of this code. This reverts commit 6528ec2887c32a051001245f08779bb2a7d9ccdc, i.e. it reapplies b1e3120a28f4530700d68d68aa30328d079b29ef, with a fix to unbreak release builds.