1 //===-- tsan_ignoreset.cc -------------------------------------------------===// 2 // 3 // This file is distributed under the University of Illinois Open Source 4 // License. See LICENSE.TXT for details. 5 // 6 //===----------------------------------------------------------------------===// 7 // 8 // This file is a part of ThreadSanitizer (TSan), a race detector. 9 // 10 //===----------------------------------------------------------------------===// 11 #include "tsan_ignoreset.h" 12 13 namespace __tsan { 14 15 const uptr IgnoreSet::kMaxSize; 16 IgnoreSet()17IgnoreSet::IgnoreSet() 18 : size_() { 19 } 20 Add(u32 stack_id)21void IgnoreSet::Add(u32 stack_id) { 22 if (size_ == kMaxSize) 23 return; 24 for (uptr i = 0; i < size_; i++) { 25 if (stacks_[i] == stack_id) 26 return; 27 } 28 stacks_[size_++] = stack_id; 29 } 30 Reset()31void IgnoreSet::Reset() { 32 size_ = 0; 33 } 34 Size() const35uptr IgnoreSet::Size() const { 36 return size_; 37 } 38 At(uptr i) const39u32 IgnoreSet::At(uptr i) const { 40 CHECK_LT(i, size_); 41 CHECK_LE(size_, kMaxSize); 42 return stacks_[i]; 43 } 44 45 } // namespace __tsan 46