0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-09-28 11:48:54 +02:00

ircd:Ⓜ️:vm: Improve release sequencing.

This commit is contained in:
Jason Volk 2020-04-20 20:25:12 -07:00
parent 61942819f2
commit b4a16c6678

View file

@ -617,19 +617,37 @@ ircd::m::vm::execute_pdu(eval &eval,
{
sequence::dock.wait([&eval]
{
return eval::seqnext(sequence::retired) == &eval;
return eval::seqnext(sequence::retired) == std::addressof(eval);
});
const auto highest
{
std::max(eval.sequence_shared[1], sequence::get(eval))
};
const auto retire
{
std::clamp
(
sequence::get(eval),
sequence::retired + 1,
highest
)
};
log::debug
{
log, "%s | retire %lu:%lu",
log, "%s | retire %lu:%lu release %lu",
loghead(eval),
sequence::get(eval),
eval.sequence_shared[1],
retire,
highest,
};
assert(sequence::get(eval) <= retire);
assert(sequence::retired < sequence::get(eval));
sequence::retired = std::max(eval.sequence_shared[1], sequence::get(eval));
assert(sequence::retired < retire);
sequence::retired = retire;
}
return fault::ACCEPT;