# Copyright 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.

import("//build/config/sanitizers/sanitizers.gni")

if (is_android || current_cpu == "mipsel" || is_mac || is_ios || is_asan ||
    is_lsan || is_tsan || is_msan || is_win || is_syzyasan) {
  _default_allocator = "none"
} else {
  _default_allocator = "tcmalloc"
}

if ((is_linux || is_android) && !is_asan && !is_lsan && !is_tsan && !is_msan) {
  _default_use_experimental_allocator_shim = true
} else {
  _default_use_experimental_allocator_shim = false
}

declare_args() {
  # Memory allocator to use. Set to "none" to use default allocator.
  use_allocator = _default_allocator

  # TODO(primiano): this should just become the default without having a flag,
  # but we need to get there first. http://crbug.com/550886 .
  # Causes all the allocations to be routed via allocator_shim.cc.
  use_experimental_allocator_shim = _default_use_experimental_allocator_shim
}

assert(use_allocator == "none" || use_allocator == "tcmalloc")

assert(!is_win || use_allocator == "none", "Tcmalloc doesn't work on Windows.")
assert(
    !use_experimental_allocator_shim || is_linux || is_android,
    "use_experimental_allocator_shim supported only on Linux and Android targets")
