diff options
author | Chris Lattner <sabre@nondot.org> | 2005-10-03 21:26:53 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-10-03 21:26:53 +0000 |
commit | eebac5fee6374f3ad10ff1c9ff710411673e8c89 (patch) | |
tree | 31ef59e6785780bb7ab781511917f01c7a6aabb1 /lib/Bytecode/Reader/Reader.h | |
parent | 8ba732bb1c21059153215a1cbe664a1db9293e1f (diff) |
Use a map to cache the ModuleType information, so we can do logarithmic
lookups instead of linear time lookups. This speeds up bc parsing of a
large file from
137.834u 118.256s 4:27.96
to
132.611u 114.436s 4:08.53
with a release build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23611 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode/Reader/Reader.h')
-rw-r--r-- | lib/Bytecode/Reader/Reader.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Bytecode/Reader/Reader.h b/lib/Bytecode/Reader/Reader.h index eec5de9849..df0ddca747 100644 --- a/lib/Bytecode/Reader/Reader.h +++ b/lib/Bytecode/Reader/Reader.h @@ -333,6 +333,12 @@ private: /// @brief This vector is used to deal with forward references to types in /// a module. TypeListTy ModuleTypes; + + /// @brief This is an inverse mapping of ModuleTypes from the type to an + /// index. Because refining types causes the index of this map to be + /// invalidated, any time we refine a type, we clear this cache and recompute + /// it next time we need it. These entries are ordered by the pointer value. + std::vector<std::pair<const Type*, unsigned> > ModuleTypeIDCache; /// @brief This vector is used to deal with forward references to types in /// a function. |