39 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8//9// This file is a part of ThreadSanitizer (TSan), a race detector.10//11//===----------------------------------------------------------------------===//12#include "tsan_ignoreset.h"13 14namespace __tsan {15 16const uptr IgnoreSet::kMaxSize;17 18IgnoreSet::IgnoreSet()19 : size_() {20}21 22void 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 32StackID IgnoreSet::At(uptr i) const {33 CHECK_LT(i, size_);34 CHECK_LE(size_, kMaxSize);35 return stacks_[i];36}37 38} // namespace __tsan39