Commits

Slava Pestov committed b0e455a8bdd
SIL: Fix type lowering cache for interface types in abstraction pattern If an abstraction pattern has interface types in it, we already enforce that it was constructed with a generic signature. This generic signature is only used to answer questions about the abstraction pattern's own formal type, and not with the substituted type. So only put type lowering cache entries in the dependent cache if they contain interface types in the substituted type. Otherwise, if only the abstraction pattern has interface types in it, the entry can live in the independent cache, allowing it to be looked up without a pushGenericContext() / popGenericContext() call. For correctness, we now have to store the generic signature in the type key as well. Subsequent changes should reduce the size of the cache, by lowering fewer archetypes. NFC, since nothing uses this for now.