changes to fix at least a bug
[model-checker.git] / nodestack.cc
index 7471c744d1a19e5b57c3ebce764fbb754dc79b86..d08fa5c733e126f1faa710bfb613bb1df6ecccff 100644 (file)
@@ -262,6 +262,7 @@ void Node::explore_child(ModelAction *act, enabled_type_t * is_enabled)
 bool Node::set_backtrack(thread_id_t id)
 {
        int i = id_to_int(id);
+       ASSERT(i<((int)backtrack.size()));
        if (backtrack[i])
                return false;
        backtrack[i] = true;
@@ -290,6 +291,14 @@ bool Node::is_enabled(Thread *t)
        return thread_id < num_threads && (enabled_array[thread_id] != THREAD_DISABLED);
 }
 
+enabled_type_t Node::enabled_status(thread_id_t tid) {
+       int thread_id=id_to_int(tid);
+       if (thread_id < num_threads)
+               return enabled_array[thread_id];
+       else
+               return THREAD_DISABLED;
+}
+
 bool Node::is_enabled(thread_id_t tid)
 {
        int thread_id=id_to_int(tid);
@@ -316,12 +325,12 @@ void Node::add_read_from(const ModelAction *act)
  * @return The first element in future_values
  */
 uint64_t Node::get_future_value() {
-       ASSERT(future_index<((int)future_values.size()));
+       ASSERT(future_index >= 0 && future_index<((int)future_values.size()));
        return future_values[future_index].value;
 }
 
 modelclock_t Node::get_future_value_expiration() {
-       ASSERT(future_index<((int)future_values.size()));
+       ASSERT(future_index >= 0 && future_index<((int)future_values.size()));
        return future_values[future_index].expiration;
 }
 
@@ -429,6 +438,7 @@ bool Node::relseq_break_empty() {
 void Node::explore(thread_id_t tid)
 {
        int i = id_to_int(tid);
+       ASSERT(i<((int)backtrack.size()));
        if (backtrack[i]) {
                backtrack[i] = false;
                numBacktracks--;