// Copyright (c) 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BASE_LOGGING_H_
#define THIRD_PARTY_BASE_LOGGING_H_

#include <assert.h>
#include <stdlib.h>

#ifndef _WIN32
#define NULL_DEREF_IF_POSSIBLE __builtin_unreachable()
#else
#define NULL_DEREF_IF_POSSIBLE __assume(0)
#endif

#define CHECK(condition)   \
  if (!(condition)) {      \
    abort();               \
    NULL_DEREF_IF_POSSIBLE;\
  }

// TODO(palmer): These are quick hacks to import PartitionAlloc with minimum
// hassle. Look into pulling in the real DCHECK definition. It might be more
// than we need, or have more dependencies than we want. In the meantime, this
// is safe, at the cost of some performance.
#define DCHECK CHECK
#define DCHECK_EQ(x, y) CHECK((x) == (y))
#define DCHECK_IS_ON() true

// TODO(palmer): Also a quick hack. IMMEDIATE_CRASH used to be simple in
// Chromium base/, but it got way more complicated and has lots of base/
// dependencies now. Sad!
#define IMMEDIATE_CRASH() abort();

#define NOTREACHED() assert(false)

#endif  // THIRD_PARTY_BASE_LOGGING_H_
