AST: GenericSignatures point directly to their RequirementMachine

This avoids a hashtable lookup when performing queries.
This commit is contained in:
Slava Pestov
2021-09-27 20:52:25 -04:00
parent 7e77bc4d87
commit 47ab4a9f28
7 changed files with 52 additions and 52 deletions

View File

@@ -194,13 +194,13 @@ GenericSignatureImpl::getGenericSignatureBuilder() const {
rewriting::RequirementMachine *
GenericSignatureImpl::getRequirementMachine() const {
// The requirement machine is associated with the canonical signature.
if (!isCanonical())
return getCanonicalSignature()->getRequirementMachine();
if (Machine)
return Machine;
// Requirement machines are stored on the ASTContext.
return getASTContext().getOrCreateRequirementMachine(
CanGenericSignature(this));
const_cast<GenericSignatureImpl *>(this)->Machine
= getASTContext().getOrCreateRequirementMachine(
getCanonicalSignature());
return Machine;
}
bool GenericSignatureImpl::isEqual(GenericSignature Other) const {