nodestack: only create may_read_from sets for read operations
authorBrian Norris <banorris@uci.edu>
Mon, 25 Jun 2012 19:22:31 +0000 (12:22 -0700)
committerBrian Norris <banorris@uci.edu>
Mon, 25 Jun 2012 19:22:31 +0000 (12:22 -0700)
nodestack.cc
nodestack.h

index d3b7c10..a39701e 100644 (file)
@@ -24,10 +24,12 @@ Node::Node(ModelAction *act, Node *par, int nthreads)
        explored_children(num_threads),
        backtrack(num_threads),
        numBacktracks(0),
-       may_read_from()
+       may_read_from(NULL)
 {
        if (act)
                act->set_node(this);
+       if (act && act->is_read())
+               may_read_from = new action_set_t();
 }
 
 /** @brief Node desctructor */
@@ -119,7 +121,8 @@ bool Node::is_enabled(Thread *t)
  */
 void Node::add_read_from(ModelAction *act)
 {
-       may_read_from.insert(act);
+       ASSERT(may_read_from);
+       may_read_from->insert(act);
 }
 
 void Node::explore(thread_id_t tid)
index 11440e5..974f1a9 100644 (file)
@@ -52,7 +52,7 @@ private:
 
        /** The set of ModelActions that this the action at this Node may read
         *  from. Only meaningful if this Node represents a 'read' action. */
-       action_set_t may_read_from;
+       action_set_t *may_read_from;
 };
 
 typedef std::list<class Node *, MyAlloc< class Node * > > node_list_t;