[SMTChecker] Use unique_ptr instead of shared_ptr where applicable.

This commit is contained in:
Leonardo Alt 2019-05-09 10:56:58 +02:00
parent c3a1c168d0
commit c8a017ccd6
8 changed files with 18 additions and 21 deletions

View File

@ -34,7 +34,7 @@ using namespace langutil;
using namespace dev::solidity;
SMTChecker::SMTChecker(ErrorReporter& _errorReporter, map<h256, string> const& _smtlib2Responses):
m_interface(make_shared<smt::SMTPortfolio>(_smtlib2Responses)),
m_interface(make_unique<smt::SMTPortfolio>(_smtlib2Responses)),
m_errorReporterReference(_errorReporter),
m_errorReporter(m_smtErrors),
m_context(*m_interface)
@ -79,7 +79,7 @@ void SMTChecker::analyze(SourceUnit const& _source, shared_ptr<Scanner> const& _
bool SMTChecker::visit(ContractDefinition const& _contract)
{
for (auto const& contract: _contract.annotation().linearizedBaseContracts)
for (auto var : contract->stateVariables())
for (auto var: contract->stateVariables())
if (*contract == _contract || var->isVisibleInDerivedContracts())
createVariable(*var);
return true;

View File

@ -290,7 +290,7 @@ private:
/// @returns the VariableDeclaration referenced by an Identifier or nullptr.
VariableDeclaration const* identifierToVariable(Expression const& _expr);
std::shared_ptr<smt::SolverInterface> m_interface;
std::unique_ptr<smt::SolverInterface> m_interface;
VariableUsage m_variableUsage;
bool m_loopExecutionHappened = false;
bool m_arrayAssignmentHappened = false;

View File

@ -32,42 +32,42 @@ using namespace dev::solidity::smt;
SMTPortfolio::SMTPortfolio(map<h256, string> const& _smtlib2Responses)
{
m_solvers.emplace_back(make_shared<smt::SMTLib2Interface>(_smtlib2Responses));
m_solvers.emplace_back(make_unique<smt::SMTLib2Interface>(_smtlib2Responses));
#ifdef HAVE_Z3
m_solvers.emplace_back(make_shared<smt::Z3Interface>());
m_solvers.emplace_back(make_unique<smt::Z3Interface>());
#endif
#ifdef HAVE_CVC4
m_solvers.emplace_back(make_shared<smt::CVC4Interface>());
m_solvers.emplace_back(make_unique<smt::CVC4Interface>());
#endif
}
void SMTPortfolio::reset()
{
for (auto s : m_solvers)
for (auto const& s: m_solvers)
s->reset();
}
void SMTPortfolio::push()
{
for (auto s : m_solvers)
for (auto const& s: m_solvers)
s->push();
}
void SMTPortfolio::pop()
{
for (auto s : m_solvers)
for (auto const& s: m_solvers)
s->pop();
}
void SMTPortfolio::declareVariable(string const& _name, Sort const& _sort)
{
for (auto s : m_solvers)
for (auto const& s: m_solvers)
s->declareVariable(_name, _sort);
}
void SMTPortfolio::addAssertion(Expression const& _expr)
{
for (auto s : m_solvers)
for (auto const& s: m_solvers)
s->addAssertion(_expr);
}
@ -105,7 +105,7 @@ pair<CheckResult, vector<string>> SMTPortfolio::check(vector<Expression> const&
{
CheckResult lastResult = CheckResult::ERROR;
vector<string> finalValues;
for (auto s : m_solvers)
for (auto const& s: m_solvers)
{
CheckResult result;
vector<string> values;

View File

@ -59,7 +59,7 @@ public:
private:
static bool solverAnswered(CheckResult result);
std::vector<std::shared_ptr<smt::SolverInterface>> m_solvers;
std::vector<std::unique_ptr<smt::SolverInterface>> m_solvers;
};
}

View File

@ -28,6 +28,5 @@ SSAVariable::SSAVariable()
void SSAVariable::resetIndex()
{
m_currentIndex = 0;
m_nextFreeIndex.reset (new unsigned);
*m_nextFreeIndex = 1;
m_nextFreeIndex = make_unique<unsigned>(1);
}

View File

@ -44,9 +44,7 @@ public:
private:
unsigned m_currentIndex;
/// The next free index is a shared pointer because we want
/// the copy and the copied to share it.
std::shared_ptr<unsigned> m_nextFreeIndex;
std::unique_ptr<unsigned> m_nextFreeIndex;
};
}

View File

@ -33,7 +33,7 @@ SymbolicVariable::SymbolicVariable(
m_type(move(_type)),
m_uniqueName(move(_uniqueName)),
m_interface(_interface),
m_ssa(make_shared<SSAVariable>())
m_ssa(make_unique<SSAVariable>())
{
solAssert(m_type, "");
m_sort = smtSort(*m_type);
@ -48,7 +48,7 @@ SymbolicVariable::SymbolicVariable(
m_sort(move(_sort)),
m_uniqueName(move(_uniqueName)),
m_interface(_interface),
m_ssa(make_shared<SSAVariable>())
m_ssa(make_unique<SSAVariable>())
{
solAssert(m_sort, "");
}

View File

@ -71,7 +71,7 @@ protected:
TypePointer m_type;
std::string m_uniqueName;
smt::SolverInterface& m_interface;
std::shared_ptr<SSAVariable> m_ssa;
std::unique_ptr<SSAVariable> m_ssa;
};
/**