X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=cyclegraph.cc;h=7632b0c9c591e44d3e1e42322ab44808142fd195;hb=72524dae1144e6fe437c8317f8f718e534ccfe0f;hp=321436387c073bb221dc58206b8d7fd30b119c85;hpb=b1de3c01aaea4141cd01410ef739a00f2987b567;p=model-checker.git diff --git a/cyclegraph.cc b/cyclegraph.cc index 3214363..7632b0c 100644 --- a/cyclegraph.cc +++ b/cyclegraph.cc @@ -8,9 +8,7 @@ CycleGraph::CycleGraph() : discovered(new HashTable(16)), hasCycles(false), - oldCycles(false), - hasRMWViolation(false), - oldRMWViolation(false) + oldCycles(false) { } @@ -113,11 +111,10 @@ void CycleGraph::addRMWEdge(const ModelAction *from, const ModelAction *rmw) CycleNode *rmwnode = getNode(rmw); /* Two RMW actions cannot read from the same write. */ - if (fromnode->setRMW(rmwnode)) { - hasRMWViolation = true; - } else { + if (fromnode->setRMW(rmwnode)) + hasCycles = true; + else rmwrollbackvector.push_back(fromnode); - } /* Transfer all outgoing edges from the from node to the rmw node */ /* This process should not add a cycle because either: @@ -246,7 +243,6 @@ void CycleGraph::startChanges() ASSERT(rollbackvector.size() == 0); ASSERT(rmwrollbackvector.size() == 0); ASSERT(oldCycles == hasCycles); - ASSERT(oldRMWViolation == hasRMWViolation); } /** Commit changes to the cyclegraph. */ @@ -255,7 +251,6 @@ void CycleGraph::commitChanges() rollbackvector.resize(0); rmwrollbackvector.resize(0); oldCycles = hasCycles; - oldRMWViolation = hasRMWViolation; } /** Rollback changes to the previous commit. */ @@ -270,7 +265,6 @@ void CycleGraph::rollbackChanges() } hasCycles = oldCycles; - hasRMWViolation = oldRMWViolation; rollbackvector.resize(0); rmwrollbackvector.resize(0); } @@ -281,11 +275,6 @@ bool CycleGraph::checkForCycles() const return hasCycles; } -bool CycleGraph::checkForRMWViolation() const -{ - return hasRMWViolation; -} - /** * @brief Constructor for a CycleNode * @param act The ModelAction for this node