// Copyright 2021 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_EARLY_ZONE_REGISTRATION_MAC_H_ #define BASE_ALLOCATOR_EARLY_ZONE_REGISTRATION_MAC_H_ // This is an Apple-only file, used to register PartitionAlloc's zone *before* // the process becomes multi-threaded. namespace partition_alloc { static constexpr char kDelegatingZoneName[] = "DelegatingDefaultZoneForPartitionAlloc"; static constexpr char kPartitionAllocZoneName[] = "PartitionAlloc"; // Zone version. Determines which callbacks are set in the various malloc_zone_t // structs. constexpr int kZoneVersion = 9; // Must be called *once*, *before* the process becomes multi-threaded. void EarlyMallocZoneRegistration(); // Tricks the registration code to believe that PartitionAlloc was not already // registered. This allows a future library load to register PartitionAlloc's // zone as well, rather than bailing out. // // This is mutually exclusive with EarlyMallocZoneRegistation(), and should // ideally be removed. Indeed, by allowing two zones to be registered, we still // end up with a split heap, and more memory usage. // // This is a hack for crbug.com/1274236. void AllowDoublePartitionAllocZoneRegistration(); } // namespace partition_alloc #endif // BASE_ALLOCATOR_EARLY_ZONE_REGISTRATION_H_