X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=promise.cc;h=86c3c584f12ba884d190c792b10f459e225c8330;hb=dc9c89654982c64264dfee7b1ea23e9a5e88e18e;hp=e38696ea4d119fd4d159656d3b3eed74443d8f3c;hpb=f1ecfba94c7ceb77c071ffa906cd6d51f66f8ee3;p=model-checker.git diff --git a/promise.cc b/promise.cc index e38696e..86c3c58 100644 --- a/promise.cc +++ b/promise.cc @@ -4,6 +4,23 @@ #include "promise.h" #include "model.h" #include "schedule.h" +#include "action.h" +#include "threads-model.h" + +/** + * @brief Promise constructor + * @param read The read which reads from a promised future value + * @param fv The future value that is promised + */ +Promise::Promise(ModelAction *read, struct future_value fv) : + num_available_threads(0), + fv(fv), + read(read), + write(NULL) +{ + add_thread(fv.tid); + eliminate_thread(read->get_tid()); +} /** * Eliminate a thread which no longer can satisfy this promise. Once all @@ -59,7 +76,7 @@ bool Promise::thread_is_available(thread_id_t tid) const /** @brief Print debug info about the Promise */ void Promise::print() const { - model_print("Promised value %#" PRIx64 ", read from thread %d, available threads to resolve: ", value, id_to_int(read->get_tid())); + model_print("Promised value %#" PRIx64 ", read from thread %d, available threads to resolve: ", fv.value, id_to_int(read->get_tid())); for (unsigned int i = 0; i < available_thread.size(); i++) if (available_thread[i]) model_print("[%d]", i);