DecomposeOrderResolver::~DecomposeOrderResolver() {
}
-HappenedBefore DecomposeOrderResolver::resolveOrder(uint64_t first, uint64_t second) {
- OrderNode *from = graph->getOrderNodeFromOrderGraph(first, false /*Don't create new node if doesn't exist*/);
- if (from == NULL) {
- return SATC_UNORDERED;
- }
- OrderNode *to = graph->getOrderNodeFromOrderGraph(second, false);
- if (from == NULL) {
- return SATC_UNORDERED;
- }
+bool DecomposeOrderResolver::resolveOrder(uint64_t first, uint64_t second) {
+ OrderNode *from = graph->lookupOrderNodeFromOrderGraph(first);
+ ASSERT(from != NULL);
+ OrderNode *to = graph->lookupOrderNodeFromOrderGraph(second);
+ ASSERT(to != NULL);
+
if (from->sccNum != to->sccNum) {
- OrderEdge *edge = graph->getOrderEdgeFromOrderGraph(from, to, false /* Don't create a new edge*/);
+ OrderEdge *edge = graph->lookupOrderEdgeFromOrderGraph(from, to);
if (edge != NULL && edge->mustPos) {
- return SATC_FIRST;
+ return true;
} else if ( edge != NULL && edge->mustNeg) {
- return SATC_SECOND;
+ return false;
} else {
switch (graph->getOrder()->type) {
case SATC_TOTAL:
- return from->sccNum < to->sccNum ? SATC_FIRST : SATC_SECOND;
+ return from->sccNum < to->sccNum;
case SATC_PARTIAL:
//Adding support for partial order ...
default: