#
e97cd90a |
| 28-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Eliminate memory allocation from most invocations of ModuleManager::visit() by keeping a free list of the two data structures used to store state (a preallocated stack and a visitation number vector)
Eliminate memory allocation from most invocations of ModuleManager::visit() by keeping a free list of the two data structures used to store state (a preallocated stack and a visitation number vector). Improves -fsyntax-only performance for my modules test case by 2.8%. Modules has pulled ahead by almost 10% with the global module index.
llvm-svn: 173692
show more ...
|
#
7211ac15 |
| 25-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Improve coordination between the module manager and the global module index, optimizing the operation that skips lookup in modules where we know the identifier will not be found. This makes the globa
Improve coordination between the module manager and the global module index, optimizing the operation that skips lookup in modules where we know the identifier will not be found. This makes the global module index optimization actually useful, providing an 8.5% speedup over modules without the global module index for -fsyntax-only.
llvm-svn: 173529
show more ...
|
#
e41d7fea |
| 25-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Optimize ModuleManager::visit() by precomputing the visitation order and limiting ourselves to two memory allocations. 10% speedup in -fsyntax-only time for modules.
With this change, we can actuall
Optimize ModuleManager::visit() by precomputing the visitation order and limiting ourselves to two memory allocations. 10% speedup in -fsyntax-only time for modules.
With this change, we can actually see some performance different from the global module index, but it's still about 1%.
llvm-svn: 173512
show more ...
|
#
e060e57b |
| 25-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Implement the reader of the global module index and wire it into the AST reader.
The global module index tracks all of the identifiers known to a set of module files. Lookup of those identifiers loo
Implement the reader of the global module index and wire it into the AST reader.
The global module index tracks all of the identifiers known to a set of module files. Lookup of those identifiers looks first in the global module index, which returns the set of module files in which that identifier can be found. The AST reader only needs to look into those module files and any module files not known to the global index (e.g., because they were (re)built after the global index), reducing the number of on-disk hash tables to visit. For an example source I'm looking at, we go from 237844 total identifier lookups into on-disk hash tables down to 126817.
Unfortunately, this does not translate into a performance advantage. At best, it's a wash once the global module index has been built, but that's ignore the cost of building the global module index (which is itself fairly large). Profiles show that the global module index code is far less efficient than it should be; optimizing it might give enough of an advantage to justify its continued inclusion.
llvm-svn: 173405
show more ...
|
#
bdb259d2 |
| 21-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Give ModuleFiles an index, so that we can use indexed vectors rather than DenseMaps and SmallPtrSets for module-visitation data. ~2.6% speedup for modules.
llvm-svn: 173081
|
Revision tags: llvmorg-3.2.0, llvmorg-3.2.0-rc3 |
|
#
6fb03aea |
| 30-Nov-2012 |
Douglas Gregor <dgregor@apple.com> |
Actually keep track of the source locations at which particular module files are loaded.
llvm-svn: 169027
|
Revision tags: llvmorg-3.2.0-rc2, llvmorg-3.2.0-rc1 |
|
#
188dbef2 |
| 07-Nov-2012 |
Douglas Gregor <dgregor@apple.com> |
When loading a module fails because it is out of date, rebuild that module in place. <rdar://problem/10138913>
llvm-svn: 167539
|
#
aedf7144 |
| 03-Oct-2012 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Set the file entry for a Module* that was created during deserialization of a module file.
llvm-svn: 165086
|
Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1 |
|
#
4fc9f3e8 |
| 18-Jan-2012 |
Douglas Gregor <dgregor@apple.com> |
Optimize unqualified/global name lookup in modules by introducing a generational scheme for identifiers that avoids searching the hash tables of a given module more than once for a given identifier.
Optimize unqualified/global name lookup in modules by introducing a generational scheme for identifiers that avoids searching the hash tables of a given module more than once for a given identifier. Previously, loading any new module invalidated all of the previous lookup results for all identifiers, causing us to perform the lookups repeatedly.
llvm-svn: 148412
show more ...
|
#
de3ef502 |
| 30-Nov-2011 |
Douglas Gregor <dgregor@apple.com> |
Promote ModuleMap::Module to a namespace-scope class in the Basic library, since modules cut across all of the libraries. Rename serialization::Module to serialization::ModuleFile to side-step the an
Promote ModuleMap::Module to a namespace-scope class in the Basic library, since modules cut across all of the libraries. Rename serialization::Module to serialization::ModuleFile to side-step the annoying naming conflict. Prune a bunch of ModuleMap.h includes that are no longer needed (most files only needed the Module type).
llvm-svn: 145538
show more ...
|
Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4, llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2, llvmorg-3.0.0-rc1 |
|
#
9d7c1a2a |
| 11-Oct-2011 |
Douglas Gregor <dgregor@apple.com> |
Add support for viewing the module graph via Graphviz, for debugging purposes.
llvm-svn: 141697
|
#
d44252ec |
| 25-Aug-2011 |
Douglas Gregor <dgregor@apple.com> |
Factor the Module and ModuleManager classes out into separate headers and .cpp files, since ASTReader.cpp was getting way too large. No functionality change.
llvm-svn: 138582
|