fix(kernel/expr): expr_cache initialization
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
8d4312d9d8
commit
4a43016735
1 changed files with 4 additions and 2 deletions
|
@ -268,11 +268,13 @@ expr_macro::~expr_macro() {
|
||||||
|
|
||||||
#ifdef LEAN_CACHE_EXPRS
|
#ifdef LEAN_CACHE_EXPRS
|
||||||
typedef lru_cache<expr, expr_hash, is_bi_equal_proc> expr_cache;
|
typedef lru_cache<expr, expr_hash, is_bi_equal_proc> expr_cache;
|
||||||
static expr_cache LEAN_THREAD_LOCAL g_expr_cache(LEAN_INITIAL_EXPR_CACHE_CAPACITY);
|
static std::unique_ptr<expr_cache> LEAN_THREAD_LOCAL g_expr_cache;
|
||||||
static bool LEAN_THREAD_LOCAL g_expr_cache_enabled = true;
|
static bool LEAN_THREAD_LOCAL g_expr_cache_enabled = true;
|
||||||
inline expr cache(expr const & e) {
|
inline expr cache(expr const & e) {
|
||||||
if (g_expr_cache_enabled) {
|
if (g_expr_cache_enabled) {
|
||||||
if (auto r = g_expr_cache.insert(e))
|
if (!g_expr_cache)
|
||||||
|
g_expr_cache.reset(new expr_cache(LEAN_INITIAL_EXPR_CACHE_CAPACITY));
|
||||||
|
if (auto r = g_expr_cache->insert(e))
|
||||||
return *r;
|
return *r;
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
|
|
Loading…
Reference in a new issue