Skip to content

Commit d554326

Browse files
committed
Use sharing_map instead of unordered_map for cache
1 parent 7714f3f commit d554326

File tree

3 files changed

+4
-36
lines changed

3 files changed

+4
-36
lines changed

src/goto-symex/goto_state.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,6 @@ Author: Romain Brenguier, [email protected]
1212

1313
#include <util/format_expr.h>
1414

15-
optionalt<symbol_exprt>
16-
dereference_cachet::lookup(const exprt &dereference) const
17-
{
18-
auto it = cache.find(dereference);
19-
if(it == cache.end())
20-
{
21-
return nullopt;
22-
}
23-
else
24-
{
25-
return {it->second};
26-
}
27-
}
28-
29-
void dereference_cachet::insert(
30-
exprt new_cached_expr,
31-
symbol_exprt new_cache_symbol)
32-
{
33-
cache.emplace(std::move(new_cached_expr), std::move(new_cache_symbol));
34-
}
35-
3615
/// Print the constant propagation map in a human-friendly format.
3716
/// This is primarily for use from the debugger; please don't delete me just
3817
/// because there aren't any current callers.

src/goto-symex/goto_state.h

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,6 @@ Author: Romain Brenguier, [email protected]
2424
// by the parent class.
2525
class goto_symex_statet;
2626

27-
/// This is used for eliminating repeated complicated dereferences.
28-
/// This is pretty much just a simple wrapper around a map.
29-
/// \see goto_symext::dereference_rec
30-
struct dereference_cachet
31-
{
32-
private:
33-
std::unordered_map<exprt, symbol_exprt, irep_hash> cache;
34-
35-
public:
36-
optionalt<symbol_exprt> lookup(const exprt &pointer) const;
37-
void insert(exprt new_cached_pointer_expr, symbol_exprt new_cache_symbol);
38-
};
39-
4027
/// Container for data that varies per program point, e.g. the constant
4128
/// propagator state, when state needs to branch. This is copied out of
4229
/// goto_symex_statet at a control-flow fork and then back into it at a
@@ -51,7 +38,9 @@ class goto_statet
5138
symex_level2t level2;
5239

5340
public:
54-
dereference_cachet dereference_cache;
41+
/// This is used for eliminating repeated complicated dereferences.
42+
/// \see goto_symext::dereference_rec
43+
sharing_mapt<exprt, symbol_exprt, false, irep_hash> dereference_cache;
5544

5645
const symex_level2t &get_level2() const
5746
{

src/goto-symex/symex_dereference.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ goto_symext::cache_dereference(exprt &dereference_result, statet &state)
211211
return cache_key;
212212
}();
213213

214-
if(auto cached = state.dereference_cache.lookup(cache_key))
214+
if(auto cached = state.dereference_cache.find(cache_key))
215215
{
216216
return *cached;
217217
}

0 commit comments

Comments
 (0)