Mega-cleanup for atomic_t<> and named bit-sets bs_t<>

Remove "atomic operator" classes
Remove test, test_and_set, test_and_reset, test_and_complement global functions
Simplify atomic_t<> with constexpr if, remove some garbage
Redesign bs_t<> to use class, mark its methods constexpr
Implement atomic_bs_t<> for optimizations
Remove unused __bitwise_ops concept (should be in other header anyway)
Bitsets can now be tested via safe bool conversion
This commit is contained in:
Nekotekina 2018-09-02 20:22:35 +03:00
parent a6d06b2e20
commit 8abe6489ed
23 changed files with 604 additions and 1090 deletions

View file

@ -114,7 +114,7 @@ namespace vm
*ptr = nullptr;
ptr = nullptr;
if (test(cpu.state, cpu_flag::memory))
if (cpu.state & cpu_flag::memory)
{
cpu.state -= cpu_flag::memory;
}
@ -221,7 +221,7 @@ namespace vm
{
while (cpu_thread* ptr = lock)
{
if (test(ptr->state, cpu_flag::dbg_global_stop + cpu_flag::exit))
if (ptr->state & (cpu_flag::dbg_global_stop + cpu_flag::exit))
{
break;
}