Build transactions at runtime

Drop _xbegin family intrinsics due to bad codegen
Implemented `notifier` class, replacing vm::notify
Minor optimization: detach transactions from global mutex on TSX path
Minor optimization: don't acquire vm::passive_lock on PPU on TSX path
This commit is contained in:
Nekotekina 2018-05-14 23:07:36 +03:00
parent fd525ae1cf
commit 367f039523
14 changed files with 529 additions and 339 deletions

View file

@ -41,28 +41,5 @@ namespace utils
bool has_xop();
FORCE_INLINE bool transaction_enter(uint* out = nullptr)
{
while (true)
{
const uint status = _xbegin();
if (status == _XBEGIN_STARTED)
{
return true;
}
if (!(status & _XABORT_RETRY))
{
if (out)
{
*out = status;
}
return false;
}
}
}
std::string get_system_info();
}