updated |= r_status;
} else if (!second_part_of_rmw) {
/* Read from future value */
- value = curr->get_node()->get_future_value();
- modelclock_t expiration = curr->get_node()->get_future_value_expiration();
+ struct future_value fv = curr->get_node()->get_future_value();
+ value = fv.value;
curr->set_read_from(NULL);
- Promise *valuepromise = new Promise(curr, value, expiration);
+ Promise *valuepromise = new Promise(curr, fv);
promises->push_back(valuepromise);
}
get_thread(curr)->set_return_value(value);
{
/* 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);
}