{
/* Do more ambitious checks now that mo is more complete */
if (mo_may_allow(writer, reader) &&
- reader->get_node()->add_future_value(writer->get_value(),
+ reader->get_node()->add_future_value(writer,
writer->get_seq_number() + params.maxfuturedelay))
set_latest_backtrack(reader);
}
* @param value is the value to backtrack to.
* @return True if the future value was successully added; false otherwise
*/
-bool Node::add_future_value(uint64_t value, modelclock_t expiration)
+bool Node::add_future_value(const ModelAction *writer, modelclock_t expiration)
{
+ uint64_t value = writer->get_value();
int idx = -1; /* Highest index where value is found */
for (unsigned int i = 0; i < future_values.size(); i++) {
if (future_values[i].value == value) {
* occurred previously in the stack. */
Node * get_parent() const { return parent; }
- bool add_future_value(uint64_t value, modelclock_t expiration);
+ bool add_future_value(const ModelAction *writer, modelclock_t expiration);
struct future_value get_future_value() const;
bool increment_future_value();
bool future_value_empty() const;