X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=action.cc;h=a90878f73d9edc34148359f127df6886d4574cd8;hb=dcf7f575967bec560d500cc4f52e35c21671525c;hp=3d46bd91aa0de6a2dd1a5729a1867fd3737343b3;hpb=f47ffb576e8ff886cb4ee7a1feaf31b3137a975a;p=model-checker.git diff --git a/action.cc b/action.cc index 3d46bd9..a90878f 100644 --- a/action.cc +++ b/action.cc @@ -31,6 +31,7 @@ ModelAction::ModelAction(action_type_t type, memory_order order, void *loc, location(loc), value(value), reads_from(NULL), + last_fence_release(NULL), node(NULL), seq_number(ACTION_INITIAL_CLOCK), cv(NULL), @@ -69,6 +70,11 @@ void ModelAction::set_seq_number(modelclock_t num) seq_number = num; } +bool ModelAction::is_thread_start() const +{ + return type == THREAD_START; +} + bool ModelAction::is_relseq_fixup() const { return type == MODEL_FIXUP_RELSEQ; @@ -336,24 +342,10 @@ void ModelAction::set_try_lock(bool obtainedlock) { /** * Update the model action's read_from action * @param act The action to read from; should be a write - * @return True if this read established synchronization */ -bool ModelAction::read_from(const ModelAction *act) +void ModelAction::set_read_from(const ModelAction *act) { - ASSERT(cv); reads_from = act; - if (act != NULL && this->is_acquire()) { - rel_heads_list_t release_heads; - model->get_release_seq_heads(this, &release_heads); - int num_heads = release_heads.size(); - for (unsigned int i = 0; i < release_heads.size(); i++) - if (!synchronize_with(release_heads[i])) { - model->set_bad_synchronization(); - num_heads--; - } - return num_heads > 0; - } - return false; } /**