1// Copyright (c) 2012 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#include "base/allocator/allocator_extension_thunks.h"
6
7#include <cstddef> // for NULL
8
9namespace base {
10namespace allocator {
11namespace thunks {
12
13// This slightly odd translation unit exists because of the peculularity of how
14// allocator_unittests work on windows.  That target has to perform
15// tcmalloc-specific initialization on windows, but it cannot depend on base
16// otherwise. This target sits in the middle - base and allocator_unittests
17// can depend on it. This file can't depend on anything else in base, including
18// logging.
19
20static GetAllocatorWasteSizeFunction g_get_allocator_waste_size_function = NULL;
21static GetStatsFunction g_get_stats_function = NULL;
22static ReleaseFreeMemoryFunction g_release_free_memory_function = NULL;
23
24void SetGetAllocatorWasteSizeFunction(
25    GetAllocatorWasteSizeFunction get_allocator_waste_size_function) {
26  g_get_allocator_waste_size_function = get_allocator_waste_size_function;
27}
28
29GetAllocatorWasteSizeFunction GetGetAllocatorWasteSizeFunction() {
30  return g_get_allocator_waste_size_function;
31}
32
33void SetGetStatsFunction(GetStatsFunction get_stats_function) {
34  g_get_stats_function = get_stats_function;
35}
36
37GetStatsFunction GetGetStatsFunction() {
38  return g_get_stats_function;
39}
40
41void SetReleaseFreeMemoryFunction(
42    ReleaseFreeMemoryFunction release_free_memory_function) {
43  g_release_free_memory_function = release_free_memory_function;
44}
45
46ReleaseFreeMemoryFunction GetReleaseFreeMemoryFunction() {
47  return g_release_free_memory_function;
48}
49
50}  // namespace thunks
51}  // namespace allocator
52}  // namespace base
53