X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=nodestack.cc;h=a73765320dac47e97428390fe37bc3b06ba10483;hb=7f6f38735411f44357208a952278a419454b52b2;hp=b33d24739ca89399ffb363c1ba3bdecd61ca6dc2;hpb=ae7fcd2e5e499f72d9d1530bdc293f4fbc5f0644;p=model-checker.git diff --git a/nodestack.cc b/nodestack.cc index b33d247..a737653 100644 --- a/nodestack.cc +++ b/nodestack.cc @@ -4,6 +4,7 @@ #include "action.h" #include "common.h" #include "model.h" +#include "threads.h" /** * @brief Node constructor @@ -273,6 +274,11 @@ bool Node::is_enabled(thread_id_t tid) return thread_id < num_threads && enabled_array[thread_id]; } +bool Node::has_priority(thread_id_t tid) +{ + return fairness[id_to_int(tid)].priority; +} + /** * Add an action to the may_read_from set. * @param act is the action to add @@ -325,8 +331,11 @@ const ModelAction * Node::get_read_from() { bool Node::increment_read_from() { DBG(); promises.clear(); - read_from_index++; - return (read_from_index < may_read_from.size()); + if (read_from_index < may_read_from.size()) { + read_from_index++; + return read_from_index < may_read_from.size(); + } + return false; } /** @@ -336,8 +345,11 @@ bool Node::increment_read_from() { bool Node::increment_future_value() { DBG(); promises.clear(); - future_index++; - return (future_index < (int)future_values.size()); + if (future_index < ((int)future_values.size())) { + future_index++; + return (future_index < ((int)future_values.size())); + } + return false; } void Node::explore(thread_id_t tid) @@ -412,6 +424,8 @@ void NodeStack::pop_restofstack(int numAhead) { /* Diverging from previous execution; clear out remainder of list */ unsigned int it=iter+numAhead; + for(unsigned int i=it;i