// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// AddressSanitizer support.

#ifndef V8_ASAN_H_
#define V8_ASAN_H_

#include "src/base/macros.h"
#include "src/globals.h"

#ifdef V8_USE_ADDRESS_SANITIZER

#include <sanitizer/asan_interface.h>

#else  // !V8_USE_ADDRESS_SANITIZER

#define ASAN_POISON_MEMORY_REGION(start, size)                         \
  static_assert(                                                       \
      (std::is_pointer<decltype(start)>::value ||                      \
       std::is_same<v8::internal::Address, decltype(start)>::value) && \
          std::is_convertible<decltype(size), size_t>::value,          \
      "static type violation")
#define ASAN_UNPOISON_MEMORY_REGION(start, size) \
  ASAN_POISON_MEMORY_REGION(start, size)

#endif  // V8_USE_ADDRESS_SANITIZER

#endif  // V8_ASAN_H_
