X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=nodestack.h;h=fc3bf1d0911c8e43da840332ffa0b41758431fd9;hb=b946732417ea4d9dec1b2c1ac3c274811a9d3fcb;hp=16264a2bbf800c6832e312cab644e85febb4f566;hpb=bdef0741b8a01e16946d261bc2a657af5a683b3e;p=model-checker.git diff --git a/nodestack.h b/nodestack.h index 16264a2..fc3bf1d 100644 --- a/nodestack.h +++ b/nodestack.h @@ -15,6 +15,7 @@ class ModelAction; typedef std::vector< const ModelAction *, MyAlloc< const ModelAction * > > readfrom_set_t; typedef std::vector< uint64_t, MyAlloc< uint64_t > > futurevalues_t; +typedef std::vector< uint32_t, MyAlloc< uint32_t > > promises_t; /** * @brief A single node in a NodeStack @@ -33,8 +34,7 @@ public: bool has_been_explored(thread_id_t tid); /* return true = backtrack set is empty */ bool backtrack_empty(); - bool readsfrom_empty(); - bool futurevalues_empty(); + void explore_child(ModelAction *act); /* return false = thread was already in backtrack */ bool set_backtrack(thread_id_t id); @@ -46,12 +46,20 @@ public: * occurred previously in the stack. */ Node * get_parent() const { return parent; } - void add_future_value(uint64_t value); + bool add_future_value(uint64_t value); + uint64_t get_future_value(); + bool increment_future_value(); + bool future_value_empty(); + void add_read_from(const ModelAction *act); const ModelAction * get_read_from(); - uint64_t get_future_value(); bool increment_read_from(); - bool increment_future_values(); + bool read_from_empty(); + + void set_promise(uint32_t i); + bool get_promise(uint32_t i); + bool increment_promise(); + bool promise_empty(); void print(); void print_may_read_from(); @@ -73,6 +81,7 @@ private: unsigned int read_from_index; futurevalues_t future_values; + promises_t promises; unsigned int future_index; };