promise: construct with a 'future_value' struct
[model-checker.git] / model.cc
index 94f68e204ec5fe8331c770651add988d4cd980af..39c19685b119225df02e0666f61775b775351c6f 100644 (file)
--- a/model.cc
+++ b/model.cc
@@ -735,10 +735,10 @@ bool ModelChecker::process_read(ModelAction *curr, bool second_part_of_rmw)
                        updated |= r_status;
                } else if (!second_part_of_rmw) {
                        /* Read from future value */
-                       value = curr->get_node()->get_future_value();
-                       modelclock_t expiration = curr->get_node()->get_future_value_expiration();
+                       struct future_value fv = curr->get_node()->get_future_value();
+                       value = fv.value;
                        curr->set_read_from(NULL);
-                       Promise *valuepromise = new Promise(curr, value, expiration);
+                       Promise *valuepromise = new Promise(curr, fv);
                        promises->push_back(valuepromise);
                }
                get_thread(curr)->set_return_value(value);
@@ -857,7 +857,7 @@ void ModelChecker::add_future_value(const ModelAction *writer, ModelAction *read
 {
        /* Do more ambitious checks now that mo is more complete */
        if (mo_may_allow(writer, reader) &&
-                       reader->get_node()->add_future_value(writer->get_value(),
+                       reader->get_node()->add_future_value(writer,
                                writer->get_seq_number() + params.maxfuturedelay))
                set_latest_backtrack(reader);
 }