diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-07-07 18:18:54 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-07 18:18:54 -0500 |
commit | 6b673474218c300576cae43388b513c7fc8448f8 (patch) | |
tree | 693a7b7ccbcb7a5a20b45df4c3564cf93dc0f2d3 /src/theory/theory_engine.cpp | |
parent | 55767b9620f18763b7b56ecefa954202d35fe2d3 (diff) |
Transfer ownership of internal Options from NodeManager to SmtEngine (#4682)
This PR decouples Options from NodeManager. Instead, options now live in SmtEngine.
The changes that were required for this PR include:
The main internal options object is now owned by SmtEngine instead of ExprManager.
The ownership resource manager is moved from NodeManager to SmtEngine.
Node manager listeners are deleted, timeouts and resource limits are set during SmtEngine::finishInit.
A temporary hack was added to make the last constructed SmtEngine to be the one in scope. This ensures that options are in scope whenever an SmtEngine is created.
The methods for invoking "subsolvers" (theory/smt_engine_subsolver.h,cpp) was simplified, as versions of these calls that change options do not have to clone a new copy of the ExprManager anymore.
Resource manager was removed from the smt2 parser.
Minor refactoring was done in SmtEngine to copy "original options" so that options are restored to their state after parsing command line options on reset.
Updates to unit tests to ensure conformance to new options scoping.
Diffstat (limited to 'src/theory/theory_engine.cpp')
-rw-r--r-- | src/theory/theory_engine.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp index 2472ae023..0b84893ae 100644 --- a/src/theory/theory_engine.cpp +++ b/src/theory/theory_engine.cpp @@ -173,6 +173,7 @@ void TheoryEngine::eqNotifyNewClass(TNode t){ TheoryEngine::TheoryEngine(context::Context* context, context::UserContext* userContext, + ResourceManager* rm, RemoveTermFormulas& iteRemover, const LogicInfo& logicInfo) : d_propEngine(nullptr), @@ -205,7 +206,7 @@ TheoryEngine::TheoryEngine(context::Context* context, d_true(), d_false(), d_interrupted(false), - d_resourceManager(NodeManager::currentResourceManager()), + d_resourceManager(rm), d_inPreregister(false), d_factsAsserted(context, false), d_preRegistrationVisitor(this, context), |