ASSERT(cv);
reads_from = act;
if (act != NULL && this->is_acquire()) {
- std::vector< const ModelAction *, MyAlloc<const ModelAction *> > release_heads;
+ rel_heads_list_t release_heads;
model->get_release_seq_heads(this, &release_heads);
for (unsigned int i = 0; i < release_heads.size(); i++)
synchronize_with(release_heads[i]);
* @return true, if the ModelChecker is certain that release_heads is complete;
* false otherwise
*/
-bool ModelChecker::release_seq_head(const ModelAction *rf,
- std::vector< const ModelAction *, MyAlloc<const ModelAction *> > *release_heads) const
+bool ModelChecker::release_seq_head(const ModelAction *rf, rel_heads_list_t *release_heads) const
{
if (!rf) {
/* read from future: need to settle this later */
* with the head(s) of the release sequence(s), if they exists with certainty.
* @see ModelChecker::release_seq_head
*/
-void ModelChecker::get_release_seq_heads(ModelAction *act,
- std::vector< const ModelAction *, MyAlloc<const ModelAction *> > *release_heads)
+void ModelChecker::get_release_seq_heads(ModelAction *act, rel_heads_list_t *release_heads)
{
const ModelAction *rf = act->get_reads_from();
bool complete;
while (it != list->end()) {
ModelAction *act = *it;
const ModelAction *rf = act->get_reads_from();
- std::vector< const ModelAction *, MyAlloc<const ModelAction *> > release_heads;
+ rel_heads_list_t release_heads;
bool complete;
complete = release_seq_head(rf, &release_heads);
for (unsigned int i = 0; i < release_heads.size(); i++) {
class CycleGraph;
class Promise;
+/** @brief Shorthand for a list of release sequence heads */
+typedef std::vector< const ModelAction *, MyAlloc<const ModelAction *> > rel_heads_list_t;
+
/**
* Model checker parameter structure. Holds run-time configuration options for
* the model checker.
bool isfeasibleotherthanRMW();
bool isfinalfeasible();
void check_promises(ClockVector *old_cv, ClockVector * merge_cv);
- void get_release_seq_heads(ModelAction *act,
- std::vector< const ModelAction *, MyAlloc<const ModelAction *> > *release_heads);
+ void get_release_seq_heads(ModelAction *act, rel_heads_list_t *release_heads);
void finish_execution();
bool isfeasibleprefix();
void set_assert() {asserted=true;}
void post_r_modification_order(ModelAction *curr, const ModelAction *rf);
bool r_modification_order(ModelAction *curr, const ModelAction *rf);
bool w_modification_order(ModelAction *curr);
- bool release_seq_head(const ModelAction *rf,
- std::vector< const ModelAction *, MyAlloc<const ModelAction *> > *release_heads) const;
+ bool release_seq_head(const ModelAction *rf, rel_heads_list_t *release_heads) const;
bool resolve_release_sequences(void *location, work_queue_t *work_queue);
void do_complete_join(ModelAction *join);