15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/allocator/allocator_extension_thunks.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cstddef> // for NULL 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace allocator { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace thunks { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This slightly odd translation unit exists because of the peculularity of how 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// allocator_unittests work on windows. That target has to perform 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// tcmalloc-specific initialization on windows, but it cannot depend on base 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// otherwise. This target sits in the middle - base and allocator_unittests 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// can depend on it. This file can't depend on anything else in base, including 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// logging. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static GetAllocatorWasteSizeFunction g_get_allocator_waste_size_function = NULL; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static GetStatsFunction g_get_stats_function = NULL; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static ReleaseFreeMemoryFunction g_release_free_memory_function = NULL; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SetGetAllocatorWasteSizeFunction( 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetAllocatorWasteSizeFunction get_allocator_waste_size_function) { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_get_allocator_waste_size_function = get_allocator_waste_size_function; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)GetAllocatorWasteSizeFunction GetGetAllocatorWasteSizeFunction() { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return g_get_allocator_waste_size_function; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetGetStatsFunction(GetStatsFunction get_stats_function) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_get_stats_function = get_stats_function; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GetStatsFunction GetGetStatsFunction() { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return g_get_stats_function; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetReleaseFreeMemoryFunction( 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReleaseFreeMemoryFunction release_free_memory_function) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_release_free_memory_function = release_free_memory_function; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ReleaseFreeMemoryFunction GetReleaseFreeMemoryFunction() { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return g_release_free_memory_function; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace thunks 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace allocator 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace base 53