From bcad4d94358b89995f6d538512dbe90817bc50d9 Mon Sep 17 00:00:00 2001 From: Nuno Lopes <nlopes@microsoft.com> Date: Wed, 17 Feb 2021 14:29:07 +0000 Subject: [PATCH] revert my mess with the ast hashtable will share results form the experiments later --- src/api/api_ast.cpp | 2 +- src/api/api_context.cpp | 2 +- src/ast/ast.h | 2 ++ src/ast/ast_translation.h | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/api/api_ast.cpp b/src/api/api_ast.cpp index 749620063..15bf13911 100644 --- a/src/api/api_ast.cpp +++ b/src/api/api_ast.cpp @@ -1323,7 +1323,7 @@ extern "C" { SET_ERROR_CODE(Z3_INVALID_ARG, nullptr); RETURN_Z3(nullptr); } - // yo! SASSERT(mk_c(c)->m().contains(to_ast(a))); + SASSERT(mk_c(c)->m().contains(to_ast(a))); ast_translation translator(mk_c(c)->m(), mk_c(target)->m()); ast * _result = translator(to_ast(a)); mk_c(target)->save_ast_trail(_result); diff --git a/src/api/api_context.cpp b/src/api/api_context.cpp index 3f3b61cac..00f985deb 100644 --- a/src/api/api_context.cpp +++ b/src/api/api_context.cpp @@ -224,7 +224,7 @@ namespace api { void context::save_ast_trail(ast * n) { - // cherry on top? SASSERT(m().contains(n)); + SASSERT(m().contains(n)); if (m_user_ref_count) { // Corner case bug: n may be in m_last_result, and this is the only reference to n. // When, we execute reset() it is deleted diff --git a/src/ast/ast.h b/src/ast/ast.h index def06f906..2e054e371 100644 --- a/src/ast/ast.h +++ b/src/ast/ast.h @@ -1667,6 +1667,8 @@ public: bool are_equal(expr * a, expr * b) const; bool are_distinct(expr * a, expr * b) const; + + bool contains(ast * a) const { return m_ast_table.contains(a); } bool is_lambda_def(quantifier* q) const { return q->get_qid() == m_lambda_def; } void add_lambda_def(func_decl* f, quantifier* q); diff --git a/src/ast/ast_translation.h b/src/ast/ast_translation.h index f2c110858..80defd112 100644 --- a/src/ast/ast_translation.h +++ b/src/ast/ast_translation.h @@ -76,9 +76,9 @@ public: template<typename T> T * translate(T const * n) { if (&from() == &to()) return const_cast<T*>(n); - // A Valentine? SASSERT(!n || from().contains(const_cast<T*>(n))); + SASSERT(!n || from().contains(const_cast<T*>(n))); ast * r = process(n); - // Pretty please SASSERT((!n && !r) || to().contains(const_cast<ast*>(r))); + SASSERT((!n && !r) || to().contains(const_cast<ast*>(r))); return static_cast<T*>(r); }