1 //===-- tsan_ignoreset.cpp ------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file is a part of ThreadSanitizer (TSan), a race detector. 10 // 11 //===----------------------------------------------------------------------===// 12 #include "tsan_ignoreset.h" 13 14 namespace __tsan { 15 16 const uptr IgnoreSet::kMaxSize; 17 18 IgnoreSet::IgnoreSet() 19 : size_() { 20 } 21 22 void IgnoreSet::Add(StackID stack_id) { 23 if (size_ == kMaxSize) 24 return; 25 for (uptr i = 0; i < size_; i++) { 26 if (stacks_[i] == stack_id) 27 return; 28 } 29 stacks_[size_++] = stack_id; 30 } 31 32 StackID IgnoreSet::At(uptr i) const { 33 CHECK_LT(i, size_); 34 CHECK_LE(size_, kMaxSize); 35 return stacks_[i]; 36 } 37 38 } // namespace __tsan 39