snapshot: use sizeof(*fork_snap)
[model-checker.git] / action.cc
index 4de6f354bfbccfbedc9061538ecb48be8e69e3e2..6e765fd638ac982ea22d47944983cab90452b815 100644 (file)
--- a/action.cc
+++ b/action.cc
@@ -77,6 +77,11 @@ bool ModelAction::is_thread_start() const
        return type == THREAD_START;
 }
 
+bool ModelAction::is_thread_join() const
+{
+       return type == THREAD_JOIN;
+}
+
 bool ModelAction::is_relseq_fixup() const
 {
        return type == MODEL_FIXUP_RELSEQ;
@@ -603,7 +608,7 @@ void ModelAction::print() const
                        if (idx >= 0)
                                model_print("  Rf: P%-2d", idx);
                        else
-                               model_print("  RF: P? ");
+                               model_print("  Rf: P? ");
                } else
                        model_print("  Rf: ?  ");
        }
@@ -625,8 +630,13 @@ unsigned int ModelAction::hash() const
        hash ^= seq_number << 5;
        hash ^= id_to_int(tid) << 6;
 
-       if (is_read() && reads_from)
-               hash ^= reads_from->get_seq_number();
+       if (is_read()) {
+              if (reads_from)
+                      hash ^= reads_from->get_seq_number();
+              else if (reads_from_promise)
+                      hash ^= model->get_promise_number(reads_from_promise);
+              hash ^= get_reads_from_value();
+       }
        return hash;
 }