AST: Introduce new SubstitutionList type to replace ArrayRef<Substitution>

SubstitutionList is going to be a more compact representation of
a SubstitutionMap, suitable for inline allocation inside another
object.

For now, it's just a typedef for ArrayRef<Substitution>.
This commit is contained in:
Slava Pestov
2017-02-06 20:23:10 -08:00
parent e98ac967d4
commit 3519e0cd25
87 changed files with 370 additions and 315 deletions

View File

@@ -104,7 +104,7 @@ struct MaterializeForSetEmitter {
FuncDecl *Witness;
AbstractStorageDecl *WitnessStorage;
AbstractionPattern WitnessStoragePattern;
ArrayRef<Substitution> WitnessSubs;
SubstitutionList WitnessSubs;
CanGenericSignature GenericSig;
GenericEnvironment *GenericEnv;
@@ -127,7 +127,7 @@ struct MaterializeForSetEmitter {
private:
MaterializeForSetEmitter(SILGenModule &SGM, SILLinkage linkage,
FuncDecl *witness, ArrayRef<Substitution> subs,
FuncDecl *witness, SubstitutionList subs,
Type selfInterfaceType, Type selfType)
: SGM(SGM),
Linkage(linkage),
@@ -173,7 +173,7 @@ public:
Type selfInterfaceType, Type selfType,
GenericEnvironment *genericEnv,
FuncDecl *requirement, FuncDecl *witness,
ArrayRef<Substitution> witnessSubs) {
SubstitutionList witnessSubs) {
MaterializeForSetEmitter emitter(SGM, linkage, witness, witnessSubs,
selfInterfaceType, selfType);
@@ -207,7 +207,7 @@ public:
static MaterializeForSetEmitter
forConcreteImplementation(SILGenModule &SGM,
FuncDecl *witness,
ArrayRef<Substitution> witnessSubs) {
SubstitutionList witnessSubs) {
auto *dc = witness->getDeclContext();
Type selfInterfaceType = dc->getSelfInterfaceType();
Type selfType = witness->mapTypeIntoContext(selfInterfaceType);
@@ -833,7 +833,7 @@ maybeEmitMaterializeForSetThunk(ProtocolConformance *conformance,
GenericEnvironment *genericEnv,
FuncDecl *requirement,
FuncDecl *witness,
ArrayRef<Substitution> witnessSubs) {
SubstitutionList witnessSubs) {
MaterializeForSetEmitter emitter
= MaterializeForSetEmitter::forWitnessThunk(