X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=action.cc;h=d8ce567039bfc451c13916aefc6d15b4b5211e38;hb=HEAD;hp=d90a94ee48211ddb17e9a3f26cafcb4e56ca9e55;hpb=f269c2a1c390e82ae189bc690a750601f874283f;p=c11tester.git diff --git a/action.cc b/action.cc index d90a94ee..d8ce5670 100644 --- a/action.cc +++ b/action.cc @@ -38,6 +38,7 @@ ModelAction::ModelAction(action_type_t type, memory_order order, void *loc, last_fence_release(NULL), cv(NULL), rf_cv(NULL), + action_ref(NULL), value(value), type(type), order(order), @@ -69,6 +70,7 @@ ModelAction::ModelAction(action_type_t type, memory_order order, uint64_t value, last_fence_release(NULL), cv(NULL), rf_cv(NULL), + action_ref(NULL), value(value), type(type), order(order), @@ -99,6 +101,7 @@ ModelAction::ModelAction(action_type_t type, memory_order order, void *loc, last_fence_release(NULL), cv(NULL), rf_cv(NULL), + action_ref(NULL), value(value), type(type), order(order), @@ -108,8 +111,7 @@ ModelAction::ModelAction(action_type_t type, memory_order order, void *loc, /* References to NULL atomic variables can end up here */ ASSERT(loc); this->size = size; - Thread *t = thread_current(); - this->tid = t->get_id(); + this->tid = thread_current_id(); } @@ -133,6 +135,7 @@ ModelAction::ModelAction(action_type_t type, const char * position, memory_order last_fence_release(NULL), cv(NULL), rf_cv(NULL), + action_ref(NULL), value(value), type(type), order(order), @@ -142,8 +145,7 @@ ModelAction::ModelAction(action_type_t type, const char * position, memory_order /* References to NULL atomic variables can end up here */ ASSERT(loc); this->size = size; - Thread *t = thread_current(); - this->tid = t->get_id(); + this->tid = thread_current_id(); } @@ -168,6 +170,7 @@ ModelAction::ModelAction(action_type_t type, const char * position, memory_order last_fence_release(NULL), cv(NULL), rf_cv(NULL), + action_ref(NULL), value(value), type(type), order(order), @@ -192,9 +195,11 @@ ModelAction::~ModelAction() * vectors which have already been rolled back to an unallocated state. */ - /* - if (cv) - delete cv; */ + + if (cv) + delete cv; + if (rf_cv) + delete rf_cv; } int ModelAction::getSize() const { @@ -246,6 +251,10 @@ bool ModelAction::is_wait() const { return type == ATOMIC_WAIT || type == ATOMIC_TIMEDWAIT; } +bool ModelAction::is_timedwait() const { + return type == ATOMIC_TIMEDWAIT; +} + bool ModelAction::is_notify() const { return type == ATOMIC_NOTIFY_ONE || type == ATOMIC_NOTIFY_ALL; } @@ -713,6 +722,9 @@ void ModelAction::print() const model_print("%-4d %-2d %-14s %7s %14p %-#18" PRIx64, seq_number, id_to_int(tid), type_str, mo_str, location, get_return_value()); if (is_read()) { + if (is_write()) { + model_print("(%" PRIx64 ")", get_write_value()); + } if (reads_from) model_print(" %-3d", reads_from->get_seq_number()); else