summaryrefslogtreecommitdiffstats
path: root/lib/Sema/MultiplexExternalSemaSource.cpp
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2016-04-29 19:04:05 +0000
committerManman Ren <manman.ren@gmail.com>2016-04-29 19:04:05 +0000
commita5a05791985b1c3289ef79c59eb8316b869af0bb (patch)
tree2127fa0ff4fb018cb0e6dbb6959c18fb505c05ff /lib/Sema/MultiplexExternalSemaSource.cpp
parent2fc800b54b76af9120d4e1581b3550ca9e395eb0 (diff)
Method Pool in modules: we make sure that if a module contains an entry for
a selector, the entry should be complete, containing everything introduced by that module and all modules it imports. Before writing out the method pool of a module, we sync up the out of date selectors by pulling in methods for the selectors, from all modules it imports. In ReadMethodPool, after pulling in the method pool entry for module A, this lets us skip the modules that module A imports. rdar://problem/25900131 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@268091 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/MultiplexExternalSemaSource.cpp')
-rw-r--r--lib/Sema/MultiplexExternalSemaSource.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Sema/MultiplexExternalSemaSource.cpp b/lib/Sema/MultiplexExternalSemaSource.cpp
index 89eec242eb..eee4c00324 100644
--- a/lib/Sema/MultiplexExternalSemaSource.cpp
+++ b/lib/Sema/MultiplexExternalSemaSource.cpp
@@ -197,6 +197,11 @@ void MultiplexExternalSemaSource::ReadMethodPool(Selector Sel) {
Sources[i]->ReadMethodPool(Sel);
}
+void MultiplexExternalSemaSource::updateOutOfDateSelector(Selector Sel) {
+ for(size_t i = 0; i < Sources.size(); ++i)
+ Sources[i]->updateOutOfDateSelector(Sel);
+}
+
void MultiplexExternalSemaSource::ReadKnownNamespaces(
SmallVectorImpl<NamespaceDecl*> &Namespaces){
for(size_t i = 0; i < Sources.size(); ++i)