diff options
Diffstat (limited to 'lib/tsan/rtl/tsan_ignoreset.cpp')
-rw-r--r-- | lib/tsan/rtl/tsan_ignoreset.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/tsan/rtl/tsan_ignoreset.cpp b/lib/tsan/rtl/tsan_ignoreset.cpp new file mode 100644 index 000000000000..f6e41f668618 --- /dev/null +++ b/lib/tsan/rtl/tsan_ignoreset.cpp @@ -0,0 +1,46 @@ +//===-- tsan_ignoreset.cpp ------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file is a part of ThreadSanitizer (TSan), a race detector. +// +//===----------------------------------------------------------------------===// +#include "tsan_ignoreset.h" + +namespace __tsan { + +const uptr IgnoreSet::kMaxSize; + +IgnoreSet::IgnoreSet() + : size_() { +} + +void IgnoreSet::Add(u32 stack_id) { + if (size_ == kMaxSize) + return; + for (uptr i = 0; i < size_; i++) { + if (stacks_[i] == stack_id) + return; + } + stacks_[size_++] = stack_id; +} + +void IgnoreSet::Reset() { + size_ = 0; +} + +uptr IgnoreSet::Size() const { + return size_; +} + +u32 IgnoreSet::At(uptr i) const { + CHECK_LT(i, size_); + CHECK_LE(size_, kMaxSize); + return stacks_[i]; +} + +} // namespace __tsan |