Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1545)

Unified Diff: base/allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc

Issue 2703803004: macOS: Shim all malloc zones. (Closed)
Patch Set: Rebase. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc
diff --git a/base/allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc b/base/allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc
index aabda1950cb290a5b2659e7a370551aea9613f1a..32898ef373395a826378a21fa705e8b5db621943 100644
--- a/base/allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc
+++ b/base/allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc
@@ -8,54 +8,53 @@
#include "base/allocator/allocator_interception_mac.h"
#include "base/allocator/allocator_shim.h"
-#include "base/logging.h"
+#include "base/allocator/malloc_zone_functions_mac.h"
namespace base {
namespace allocator {
-
namespace {
-// This is the zone that the allocator shim will call to actually perform heap
-// allocations. It should be populated with the original, unintercepted default
-// malloc zone.
-MallocZoneFunctions g_default_zone;
-
void* MallocImpl(const AllocatorDispatch*, size_t size, void* context) {
- return g_default_zone.malloc(
- reinterpret_cast<struct _malloc_zone_t*>(context), size);
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ return functions.malloc(reinterpret_cast<struct _malloc_zone_t*>(context),
+ size);
}
void* CallocImpl(const AllocatorDispatch*,
size_t n,
size_t size,
void* context) {
- return g_default_zone.calloc(
- reinterpret_cast<struct _malloc_zone_t*>(context), n, size);
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ return functions.calloc(reinterpret_cast<struct _malloc_zone_t*>(context), n,
+ size);
}
void* MemalignImpl(const AllocatorDispatch*,
size_t alignment,
size_t size,
void* context) {
- return g_default_zone.memalign(
- reinterpret_cast<struct _malloc_zone_t*>(context), alignment, size);
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ return functions.memalign(reinterpret_cast<struct _malloc_zone_t*>(context),
+ alignment, size);
}
void* ReallocImpl(const AllocatorDispatch*,
void* ptr,
size_t size,
void* context) {
- return g_default_zone.realloc(
- reinterpret_cast<struct _malloc_zone_t*>(context), ptr, size);
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ return functions.realloc(reinterpret_cast<struct _malloc_zone_t*>(context),
+ ptr, size);
}
void FreeImpl(const AllocatorDispatch*, void* ptr, void* context) {
- g_default_zone.free(reinterpret_cast<struct _malloc_zone_t*>(context), ptr);
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ functions.free(reinterpret_cast<struct _malloc_zone_t*>(context), ptr);
}
size_t GetSizeEstimateImpl(const AllocatorDispatch*, void* ptr, void* context) {
- return g_default_zone.size(reinterpret_cast<struct _malloc_zone_t*>(context),
- ptr);
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ return functions.size(reinterpret_cast<struct _malloc_zone_t*>(context), ptr);
}
unsigned BatchMallocImpl(const AllocatorDispatch* self,
@@ -63,7 +62,8 @@ unsigned BatchMallocImpl(const AllocatorDispatch* self,
void** results,
unsigned num_requested,
void* context) {
- return g_default_zone.batch_malloc(
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ return functions.batch_malloc(
reinterpret_cast<struct _malloc_zone_t*>(context), size, results,
num_requested);
}
@@ -72,22 +72,24 @@ void BatchFreeImpl(const AllocatorDispatch* self,
void** to_be_freed,
unsigned num_to_be_freed,
void* context) {
- g_default_zone.batch_free(reinterpret_cast<struct _malloc_zone_t*>(context),
- to_be_freed, num_to_be_freed);
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ functions.batch_free(reinterpret_cast<struct _malloc_zone_t*>(context),
+ to_be_freed, num_to_be_freed);
}
void FreeDefiniteSizeImpl(const AllocatorDispatch* self,
void* ptr,
size_t size,
void* context) {
- g_default_zone.free_definite_size(
+ MallocZoneFunctions& functions = GetFunctionsForZone(context);
+ functions.free_definite_size(
reinterpret_cast<struct _malloc_zone_t*>(context), ptr, size);
}
} // namespace
void InitializeDefaultDispatchToMacAllocator() {
- StoreFunctionsForDefaultZone(&g_default_zone);
+ StoreFunctionsForAllZones();
}
const AllocatorDispatch AllocatorDispatch::default_dispatch = {

Powered by Google App Engine
This is Rietveld 408576698