1// Copyright (c) 2014 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. 4 5#ifndef PDFIUM_THIRD_PARTY_BASE_LOGGING_H_ 6#define PDFIUM_THIRD_PARTY_BASE_LOGGING_H_ 7 8#include <assert.h> 9#include <stdlib.h> 10 11#ifndef _WIN32 12#define NULL_DEREF_IF_POSSIBLE \ 13 *(reinterpret_cast<volatile char*>(NULL) + 42) = 0x42; 14#else 15#define NULL_DEREF_IF_POSSIBLE 16#endif 17 18#define CHECK(condition) \ 19 if (!(condition)) { \ 20 abort(); \ 21 NULL_DEREF_IF_POSSIBLE \ 22 } 23 24// TODO(palmer): These are quick hacks to import PartitionAlloc with minimum 25// hassle. Look into pulling in the real DCHECK definition. It might be more 26// than we need, or have more dependencies than we want. In the meantime, this 27// is safe, at the cost of some performance. 28#define DCHECK CHECK 29#define DCHECK_EQ(x, y) CHECK((x) == (y)) 30#define DCHECK_IS_ON() true 31 32// TODO(palmer): Also a quick hack. IMMEDIATE_CRASH used to be simple in 33// Chromium base/, but it got way more complicated and has lots of base/ 34// dependencies now. Sad! 35#define IMMEDIATE_CRASH() abort(); 36 37#define NOTREACHED() assert(false) 38 39#endif // PDFIUM_THIRD_PARTY_BASE_LOGGING_H_ 40