From: Brian Demsky Date: Sat, 3 Nov 2012 09:54:08 +0000 (-0700) Subject: clean up check code X-Git-Tag: pldi2013~13^2~4 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=commitdiff_plain;h=6a5bc08a330aab6440af5933b44c4cd1475807ba clean up check code --- diff --git a/nodestack.cc b/nodestack.cc index 22cc378..743cb86 100644 --- a/nodestack.cc +++ b/nodestack.cc @@ -161,21 +161,14 @@ bool Node::increment_promise() { * @return true if we have explored all promise combinations. */ bool Node::promise_empty() { - unsigned int rmw_count=0; - for (unsigned int i = 0; i < promises.size(); i++) { - if (promises[i]==(PROMISE_RMW|PROMISE_FULFILLED)) - rmw_count++; - } - - for (unsigned int i = 0; i < promises.size();i++) { - if ((promises[i]& PROMISE_MASK) == PROMISE_UNFULFILLED) { - //if this isn't a feasible option, keep going - if ((rmw_count > 0)&&(promises[i] & PROMISE_RMW)) - continue; + bool fulfilledrmw=false; + for (int i = promises.size()-1 ; i>=0; i--) { + if (promises[i]==PROMISE_UNFULFILLED) return false; - } else if (promises[i] == (PROMISE_RMW|PROMISE_FULFILLED)) { - rmw_count--; - } + if (!fulfilledrmw && ((promises[i]&PROMISE_MASK)==PROMISE_UNFULFILLED)) + return false; + if (promises[i]==(PROMISE_FULFILLED|PROMISE_RMW)) + fulfilledrmw=true; } return true; }