From 0cf897e065772da8afc17e180912a70b6c7bee80 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 30 Jul 2019 13:46:23 -0700 Subject: [PATCH] more fixes --- cyclegraph.cc | 20 ++++++++++---------- stl-model.h | 22 ++++++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/cyclegraph.cc b/cyclegraph.cc index 966a5035..3da8dc54 100644 --- a/cyclegraph.cc +++ b/cyclegraph.cc @@ -138,13 +138,13 @@ void CycleGraph::addRMWEdge(const ModelAction *from, const ModelAction *rmw) } void CycleGraph::addEdges(SnapList * edgeset, const ModelAction *to) { - for(SnapList::iterator it = edgeset->begin();it!=edgeset->end();) { - ModelAction *act = *it; + for(sllnode * it = edgeset->begin();it!=NULL;) { + ModelAction *act = it->getVal(); CycleNode *node = getNode(act); - SnapList::iterator it2 = it; - it2++; - for(;it2!=edgeset->end(); ) { - ModelAction *act2 = *it2; + sllnode * it2 = it; + it2=it2->getNext(); + for(;it2!=NULL; ) { + ModelAction *act2 = it2->getVal(); CycleNode *node2 = getNode(act2); if (checkReachable(node, node2)) { it = edgeset->erase(it); @@ -153,16 +153,16 @@ void CycleGraph::addEdges(SnapList * edgeset, const ModelAction * it2 = edgeset->erase(it2); goto endinnerloop; } - it2++; + it2=it2->getNext(); endinnerloop: ; } - it++; + it=it->getNext(); endouterloop: ; } - for(SnapList::iterator it = edgeset->begin();it!=edgeset->end();it++) { - ModelAction *from = *it; + for(sllnode *it = edgeset->begin();it!=NULL;it=it->getNext()) { + ModelAction *from = it->getVal(); addEdge(from, to, from->get_tid() == to->get_tid()); } } diff --git a/stl-model.h b/stl-model.h index 24ed29a6..bf34ec7d 100644 --- a/stl-model.h +++ b/stl-model.h @@ -10,12 +10,14 @@ class mllnode { _Tp getVal() {return val;} mllnode<_Tp> * getNext() {return next;} mllnode<_Tp> * getPrev() {return prev;} + MEMALLOC; private: mllnode<_Tp> * next; mllnode<_Tp> * prev; _Tp val; + template friend class ModelList; }; @@ -76,7 +78,7 @@ public: } } - void erase(mllnode<_Tp> * node) { + mllnode<_Tp> * erase(mllnode<_Tp> * node) { if (head == node) { head = node->next; } else { @@ -88,15 +90,16 @@ public: } else { tail->next->prev = node->prev; } - + mllnode<_Tp> *next = node->next; delete node; + return next; } - mllnode<_Tp> begin() { + mllnode<_Tp> * begin() { return head; } - mllnode<_Tp> end() { + mllnode<_Tp> * end() { return tail; } @@ -127,6 +130,7 @@ class sllnode { sllnode<_Tp> * next; sllnode<_Tp> * prev; _Tp val; + template friend class SnapList; }; @@ -187,7 +191,7 @@ public: } } - void erase(sllnode<_Tp> * node) { + sllnode<_Tp> * erase(sllnode<_Tp> * node) { if (head == node) { head = node->next; } else { @@ -199,15 +203,17 @@ public: } else { tail->next->prev = node->prev; } - + + sllnode<_Tp> *next = node->next; delete node; + return next; } - sllnode<_Tp> begin() { + sllnode<_Tp> * begin() { return head; } - sllnode<_Tp> end() { + sllnode<_Tp> * end() { return tail; } -- 2.34.1