| // 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_ |