summaryrefslogtreecommitdiff
path: root/src/theory/arrays/array_info.cpp
diff options
context:
space:
mode:
authorTim King <taking@google.com>2016-01-08 16:44:57 -0800
committerTim King <taking@google.com>2016-01-08 16:44:57 -0800
commitf4ef7af0a2295691f281ee1604dfeb4082fe229c (patch)
tree995e512e5669cec6bbc9447d00ec912d5e4c19e3 /src/theory/arrays/array_info.cpp
parentdef0a07f9676a292a849d7fc8269ffd0901ce156 (diff)
Removing StatisticsRegistry's static functions current() and registerStat().
- The functionality the get the StatisticsRegistry attached to the SmtEngine was previously through StatisticsRegistry::current(). This is the dominant StatisticsRegistry in the code. (There is another StatisticsRegistry attached to the NodeManager.) Having this be a static function on StatisticsRegistry requires the use of an SmtEngine in the wrong compilation unit. - Usages of StatisticsRegistry::current() that were visible in prop/{bvminisat,minisat} has been removed. A pointer to the relevant StatisticsRegistry should be passed instead into the constructor. - The function StatisticsRegistry::current() has been replaced by SmtScope::currentStatisticsRegistry(). SmtScope is in the libcvc4 package, where SmtEngine is available in the compilation unit. - The function smtStatisticsRegistry() is a synonym for SmtScope::currentStatisticsRegistry() in smt/smt_statistics_registry.h. This header has fewer include dependencies than the one for SmtScope. - Correspondingly, the static functions StatisticsRegistry::{registerStat, unregisterStat} have been removed. One should instead use smtStatisticsRegistry()->{registerStat,unregisterStat} instead. - The KEEP_STATISTIC macro has been moved into smt/smt_statistics_registry.h. - Documents the reason StatisticsRegistry is CVC4_PUBLIC. This lets me remove the warning I added. - Removing most operators for timespec from statistics_registry.h file. These a bit error prone in clang. - Most of the really confusing ifdef's in util/statistics_registry.h are gone.
Diffstat (limited to 'src/theory/arrays/array_info.cpp')
-rw-r--r--src/theory/arrays/array_info.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/theory/arrays/array_info.cpp b/src/theory/arrays/array_info.cpp
index cd0025fe2..e94abe9cb 100644
--- a/src/theory/arrays/array_info.cpp
+++ b/src/theory/arrays/array_info.cpp
@@ -17,10 +17,53 @@
#include "theory/arrays/array_info.h"
+#include "smt/smt_statistics_registry.h"
+
namespace CVC4 {
namespace theory {
namespace arrays {
+ArrayInfo::ArrayInfo(context::Context* c, Backtracker<TNode>* b)
+ : ct(c), bck(b), info_map(),
+ d_mergeInfoTimer("theory::arrays::mergeInfoTimer"),
+ d_avgIndexListLength("theory::arrays::avgIndexListLength"),
+ d_avgStoresListLength("theory::arrays::avgStoresListLength"),
+ d_avgInStoresListLength("theory::arrays::avgInStoresListLength"),
+ d_listsCount("theory::arrays::listsCount",0),
+ d_callsMergeInfo("theory::arrays::callsMergeInfo",0),
+ d_maxList("theory::arrays::maxList",0),
+ d_tableSize("theory::arrays::infoTableSize", info_map) {
+ emptyList = new(true) CTNodeList(ct);
+ emptyInfo = new Info(ct, bck);
+ smtStatisticsRegistry()->registerStat(&d_mergeInfoTimer);
+ smtStatisticsRegistry()->registerStat(&d_avgIndexListLength);
+ smtStatisticsRegistry()->registerStat(&d_avgStoresListLength);
+ smtStatisticsRegistry()->registerStat(&d_avgInStoresListLength);
+ smtStatisticsRegistry()->registerStat(&d_listsCount);
+ smtStatisticsRegistry()->registerStat(&d_callsMergeInfo);
+ smtStatisticsRegistry()->registerStat(&d_maxList);
+ smtStatisticsRegistry()->registerStat(&d_tableSize);
+}
+
+ArrayInfo::~ArrayInfo() {
+ CNodeInfoMap::iterator it = info_map.begin();
+ for( ; it != info_map.end(); it++ ) {
+ if((*it).second!= emptyInfo) {
+ delete (*it).second;
+ }
+ }
+ emptyList->deleteSelf();
+ delete emptyInfo;
+ smtStatisticsRegistry()->unregisterStat(&d_mergeInfoTimer);
+ smtStatisticsRegistry()->unregisterStat(&d_avgIndexListLength);
+ smtStatisticsRegistry()->unregisterStat(&d_avgStoresListLength);
+ smtStatisticsRegistry()->unregisterStat(&d_avgInStoresListLength);
+ smtStatisticsRegistry()->unregisterStat(&d_listsCount);
+ smtStatisticsRegistry()->unregisterStat(&d_callsMergeInfo);
+ smtStatisticsRegistry()->unregisterStat(&d_maxList);
+ smtStatisticsRegistry()->unregisterStat(&d_tableSize);
+}
+
bool inList(const CTNodeList* l, const TNode el) {
CTNodeList::const_iterator it = l->begin();
for ( ; it!= l->end(); it ++) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback