12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // Copyright 2017 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 BASE_ALLOCATOR_ALLOCATOR_INTERCEPTION_MAC_H_
- #define BASE_ALLOCATOR_ALLOCATOR_INTERCEPTION_MAC_H_
- #include <stddef.h>
- #include "base/base_export.h"
- #include "third_party/apple_apsl/malloc.h"
- namespace base {
- namespace allocator {
- struct MallocZoneFunctions;
- // This initializes AllocatorDispatch::default_dispatch by saving pointers to
- // the functions in the current default malloc zone. This must be called before
- // the default malloc zone is changed to have its intended effect.
- void InitializeDefaultDispatchToMacAllocator();
- // Saves the function pointers currently used by the default zone.
- void StoreFunctionsForDefaultZone();
- // Same as StoreFunctionsForDefaultZone, but for all malloc zones.
- void StoreFunctionsForAllZones();
- // For all malloc zones that have been stored, replace their functions with
- // |functions|.
- void ReplaceFunctionsForStoredZones(const MallocZoneFunctions* functions);
- extern bool g_replaced_default_zone;
- // Calls the original implementation of malloc/calloc prior to interception.
- bool UncheckedMallocMac(size_t size, void** result);
- bool UncheckedCallocMac(size_t num_items, size_t size, void** result);
- // Intercepts calls to default and purgeable malloc zones. Intercepts Core
- // Foundation and Objective-C allocations.
- // Has no effect on the default malloc zone if the allocator shim already
- // performs that interception.
- BASE_EXPORT void InterceptAllocationsMac();
- // Updates all malloc zones to use their original functions.
- // Also calls ClearAllMallocZonesForTesting.
- BASE_EXPORT void UninterceptMallocZonesForTesting();
- // Periodically checks for, and shims new malloc zones. Stops checking after 1
- // minute.
- BASE_EXPORT void PeriodicallyShimNewMallocZones();
- // Exposed for testing.
- BASE_EXPORT void ShimNewMallocZones();
- BASE_EXPORT void ReplaceZoneFunctions(ChromeMallocZone* zone,
- const MallocZoneFunctions* functions);
- } // namespace allocator
- } // namespace base
- #endif // BASE_ALLOCATOR_ALLOCATOR_INTERCEPTION_MAC_H_
|