From: Brian Norris Date: Mon, 25 Jun 2012 19:22:31 +0000 (-0700) Subject: nodestack: only create may_read_from sets for read operations X-Git-Tag: pldi2013~389^2^2~4 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c01d975387b4fc4b711acbdbdc19e3690985adec;p=model-checker.git nodestack: only create may_read_from sets for read operations --- diff --git a/nodestack.cc b/nodestack.cc index d3b7c10..a39701e 100644 --- a/nodestack.cc +++ b/nodestack.cc @@ -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) diff --git a/nodestack.h b/nodestack.h index 11440e5..974f1a9 100644 --- a/nodestack.h +++ b/nodestack.h @@ -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 > node_list_t;