X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=cyclegraph.cc;h=ead70ae6b38c2c687ab34c30db9659d57b68e110;hp=33f8cda85cedacffdea92d344be05ddf4f4b10e4;hb=dbb1bb205f35f076cf2d82ec443415d858b22e2f;hpb=14e14603f64fe9004606ca82668adf7ef002d90e diff --git a/cyclegraph.cc b/cyclegraph.cc index 33f8cda8..ead70ae6 100644 --- a/cyclegraph.cc +++ b/cyclegraph.cc @@ -6,6 +6,7 @@ /** Initializes a CycleGraph object. */ CycleGraph::CycleGraph() : + discovered(new HashTable(16)), hasCycles(false), oldCycles(false), hasRMWViolation(false), @@ -182,10 +183,10 @@ bool CycleGraph::checkReachable(const ModelAction *from, const ModelAction *to) */ bool CycleGraph::checkReachable(CycleNode *from, CycleNode *to) { std::vector > queue; - HashTable discovered(64); + discovered->reset(); queue.push_back(from); - discovered.put(from, from); + discovered->put(from, from); while(!queue.empty()) { CycleNode * node=queue.back(); queue.pop_back(); @@ -194,8 +195,8 @@ bool CycleGraph::checkReachable(CycleNode *from, CycleNode *to) { for(unsigned int i=0;igetEdges()->size();i++) { CycleNode *next=(*node->getEdges())[i]; - if (!discovered.contains(next)) { - discovered.put(next,next); + if (!discovered->contains(next)) { + discovered->put(next,next); queue.push_back(next); } } @@ -205,12 +206,12 @@ bool CycleGraph::checkReachable(CycleNode *from, CycleNode *to) { bool CycleGraph::checkPromise(const ModelAction *fromact, Promise *promise) { std::vector > queue; - HashTable discovered(64); + discovered->reset(); CycleNode *from = actionToNode.get(fromact); queue.push_back(from); - discovered.put(from, from); + discovered->put(from, from); while(!queue.empty()) { CycleNode * node=queue.back(); queue.pop_back(); @@ -221,8 +222,8 @@ bool CycleGraph::checkPromise(const ModelAction *fromact, Promise *promise) { for(unsigned int i=0;igetEdges()->size();i++) { CycleNode *next=(*node->getEdges())[i]; - if (!discovered.contains(next)) { - discovered.put(next,next); + if (!discovered->contains(next)) { + discovered->put(next,next); queue.push_back(next); } }