void addRMWEdge(const ModelAction *from, const ModelAction *rmw);
bool checkReachable(const ModelAction *from, const ModelAction *to);
void startChanges();
void commitChanges();
void rollbackChanges();
void addRMWEdge(const ModelAction *from, const ModelAction *rmw);
bool checkReachable(const ModelAction *from, const ModelAction *to);
void startChanges();
void commitChanges();
void rollbackChanges();
private:
CycleNode * getNode(const ModelAction *);
/** @brief A table for mapping ModelActions to CycleNodes */
HashTable<const ModelAction *, CycleNode *, uintptr_t, 4> actionToNode;
private:
CycleNode * getNode(const ModelAction *);
/** @brief A table for mapping ModelActions to CycleNodes */
HashTable<const ModelAction *, CycleNode *, uintptr_t, 4> actionToNode;
bool checkReachable(CycleNode *from, CycleNode *to);
/** @brief A flag: true if this graph contains cycles */
bool hasCycles;
bool checkReachable(CycleNode *from, CycleNode *to);
/** @brief A flag: true if this graph contains cycles */
bool hasCycles;