File tree Expand file tree Collapse file tree 3 files changed +8
-8
lines changed Expand file tree Collapse file tree 3 files changed +8
-8
lines changed Original file line number Diff line number Diff line change @@ -942,7 +942,8 @@ class ASTContext final {
942
942
return !LangOpts.EnableAccessControl ;
943
943
}
944
944
945
- llvm::SmallVectorImpl<Type> &getDefaultTypeRequestCache ();
945
+ // / Logically, there is a separate cache for each SourceFile.
946
+ llvm::SmallVectorImpl<Type> &getDefaultTypeRequestCache (SourceFile*);
946
947
947
948
private:
948
949
friend Decl;
Original file line number Diff line number Diff line change @@ -290,11 +290,10 @@ FOR_KNOWN_FOUNDATION_TYPES(CACHE_FOUNDATION_DECL)
290
290
ProtocolConformanceRef>
291
291
DefaultAssociatedConformanceWitnesses;
292
292
293
- // / Cache of default types for DefaultTypeRequest.
293
+ // / Caches of default types for DefaultTypeRequest.
294
294
// / Used to be instance variables in the TypeChecker.
295
- // / Soon to become more specific.
296
- llvm::SmallVector<Type, NumKnownProtocols> DefaultTypeRequestCache{
297
- NumKnownProtocols, Type ()};
295
+ // / There is a logically separate cache for each SourceFile.
296
+ llvm::DenseMap<SourceFile*, llvm::SmallVector<Type, NumKnownProtocols>> DefaultTypeRequestCaches;
298
297
299
298
// / Structure that captures data that is segregated into different
300
299
// / arenas.
@@ -5080,6 +5079,6 @@ LayoutConstraint LayoutConstraint::getLayoutConstraint(LayoutConstraintKind Kind
5080
5079
return LayoutConstraint (New);
5081
5080
}
5082
5081
5083
- llvm::SmallVectorImpl<Type> &ASTContext::getDefaultTypeRequestCache () {
5084
- return getImpl ().DefaultTypeRequestCache ;
5082
+ llvm::SmallVectorImpl<Type> &ASTContext::getDefaultTypeRequestCache (SourceFile* SF ) {
5083
+ return getImpl ().DefaultTypeRequestCaches [SF] ;
5085
5084
}
Original file line number Diff line number Diff line change @@ -457,7 +457,7 @@ SourceFile *DefaultTypeRequest::getSourceFile() const {
457
457
}
458
458
459
459
llvm::SmallVectorImpl<Type> &DefaultTypeRequest::getCache () const {
460
- return getDeclContext ()->getASTContext ().getDefaultTypeRequestCache ();
460
+ return getDeclContext ()->getASTContext ().getDefaultTypeRequestCache (getSourceFile () );
461
461
}
462
462
463
463
Optional<Type> DefaultTypeRequest::getCachedResult () const {
You can’t perform that action at this time.
0 commit comments