Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / Source / wtf / ContainerAnnotations.h
blob9c5fb9e66a0c647ff8f6832cd05a6b708b64ad50
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef WTF_ContainerAnnotations_h
6 #define WTF_ContainerAnnotations_h
8 #include "wtf/CPU.h"
10 // TODO(ochang): Remove the CPU(X86_64) condition to enable this for X86 once
11 // the crashes there have been fixed: http://crbug.com/461406
12 #if defined(ADDRESS_SANITIZER) && OS(LINUX) && CPU(X86_64)
13 #define ANNOTATE_CONTIGUOUS_CONTAINER
14 #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) \
15 if (buffer) { \
16 __sanitizer_annotate_contiguous_container(buffer, (buffer) + (capacity), (buffer) + (capacity), (buffer) + (newSize)); \
18 #define ANNOTATE_DELETE_BUFFER(buffer, capacity, oldSize) \
19 if (buffer) { \
20 __sanitizer_annotate_contiguous_container(buffer, (buffer) + (capacity), (buffer) + (oldSize), (buffer) + (capacity)); \
22 #define ANNOTATE_CHANGE_SIZE(buffer, capacity, oldSize, newSize) \
23 if (buffer) { \
24 __sanitizer_annotate_contiguous_container(buffer, (buffer) + (capacity), (buffer) + (oldSize), (buffer) + (newSize)); \
26 #define ANNOTATE_CHANGE_CAPACITY(buffer, oldCapacity, bufferSize, newCapacity) \
27 ANNOTATE_DELETE_BUFFER(buffer, oldCapacity, bufferSize); \
28 ANNOTATE_NEW_BUFFER(buffer, newCapacity, bufferSize);
29 // Annotations require buffers to begin on an 8-byte boundary.
30 #else // defined(ADDRESS_SANITIZER) && OS(LINUX) && CPU(X86_64)
31 #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize)
32 #define ANNOTATE_DELETE_BUFFER(buffer, capacity, oldSize)
33 #define ANNOTATE_CHANGE_SIZE(buffer, capacity, oldSize, newSize)
34 #define ANNOTATE_CHANGE_CAPACITY(buffer, oldCapacity, bufferSize, newCapacity)
35 #endif // defined(ADDRESS_SANITIZER) && OS(LINUX) && CPU(X86_64)
37 #endif // WTF_ContainerAnnotations_h