X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=model.h;h=bd8791964baee4982c058c05c42d3678a7f621da;hp=d47fe9677a78c57b0c6a8da46ac774b7749a7ef2;hb=57d7975634e97da2d32f95054dccf40ca871e558;hpb=a1b119052d16810d6289855635c2b0e66a6b93b8 diff --git a/model.h b/model.h index d47fe967..bd879196 100644 --- a/model.h +++ b/model.h @@ -32,6 +32,12 @@ struct model_params { int maxfuturedelay; }; +struct PendingFutureValue { + uint64_t value; + modelclock_t expiration; + ModelAction * act; +}; + /** * Structure for holding small ModelChecker members that should be snapshotted */ @@ -79,7 +85,7 @@ public: bool isfinalfeasible(); void check_promises(ClockVector *old_cv, ClockVector * merge_cv); void get_release_seq_heads(ModelAction *act, - std::vector *release_heads); + std::vector< const ModelAction *, MyAlloc > *release_heads); void finish_execution(); bool isfeasibleprefix(); void set_assert() {asserted=true;} @@ -88,9 +94,6 @@ public: private: /** The scheduler to use: tracks the running/ready Threads */ Scheduler *scheduler; - - bool ensure_rmw_acyclic(const ModelAction * read, const ModelAction *write); - bool thin_air_constraint_may_allow(const ModelAction * writer, const ModelAction *reader); bool has_asserted() {return asserted;} @@ -120,7 +123,6 @@ private: bool resolve_promises(ModelAction *curr); void compute_promises(ModelAction *curr); - void check_curr_backtracking(ModelAction * curr); void add_action_to_lists(ModelAction *act); ModelAction * get_last_action(thread_id_t tid); @@ -131,7 +133,7 @@ private: bool r_modification_order(ModelAction *curr, const ModelAction *rf); bool w_modification_order(ModelAction *curr); bool release_seq_head(const ModelAction *rf, - std::vector *release_heads) const; + std::vector< const ModelAction *, MyAlloc > *release_heads) const; bool resolve_release_sequences(void *location); ModelAction *diverge; @@ -146,6 +148,7 @@ private: HashTable, uintptr_t, 4 > *obj_thrd_map; std::vector *promises; + std::vector *futurevalues; /** * Collection of lists of objects that might synchronize with one or @@ -189,7 +192,6 @@ private: bool failed_promise; bool too_many_reads; bool asserted; - bool rmw_cycle; }; extern ModelChecker *model;