mirror of
https://github.com/intel/llvm.git
synced 2026-02-07 07:39:11 +08:00
scudo: Simplify AtomicOptions::setFillContentsMode. NFCI.
Differential Revision: https://reviews.llvm.org/D88747
This commit is contained in:
@@ -54,16 +54,14 @@ public:
|
||||
}
|
||||
|
||||
void setFillContentsMode(FillContentsMode FillContents) {
|
||||
while (1) {
|
||||
u32 Opts = atomic_load(&Val, memory_order_relaxed);
|
||||
u32 NewOpts = Opts;
|
||||
u32 Opts = atomic_load(&Val, memory_order_relaxed), NewOpts;
|
||||
do {
|
||||
NewOpts = Opts;
|
||||
NewOpts &= ~(3U << static_cast<u32>(OptionBit::FillContents0of2));
|
||||
NewOpts |= static_cast<u32>(FillContents)
|
||||
<< static_cast<u32>(OptionBit::FillContents0of2);
|
||||
if (atomic_compare_exchange_strong(&Val, &Opts, NewOpts,
|
||||
memory_order_relaxed))
|
||||
break;
|
||||
}
|
||||
} while (!atomic_compare_exchange_strong(&Val, &Opts, NewOpts,
|
||||
memory_order_relaxed));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user