Index: third_party/apple_apsl/CFBase.h |
diff --git a/third_party/apple_apsl/CFBase.h b/third_party/apple_apsl/CFBase.h |
index 7942966840aea72a00c4b2ade808676136ab6b62..f7ecaf6c916a44185158dd07df7d0c3e1a068de5 100644 |
--- a/third_party/apple_apsl/CFBase.h |
+++ b/third_party/apple_apsl/CFBase.h |
@@ -1,5 +1,5 @@ |
/* |
- * Copyright (c) 2009 Apple Inc. All rights reserved. |
+ * Copyright (c) 2011 Apple Inc. All rights reserved. |
* |
* @APPLE_LICENSE_HEADER_START@ |
* |
@@ -21,7 +21,7 @@ |
* @APPLE_LICENSE_HEADER_END@ |
*/ |
/* CFBase.c |
- Copyright (c) 1998-2009, Apple Inc. All rights reserved. |
+ Copyright (c) 1998-2011, Apple Inc. All rights reserved. |
Responsibility: Christopher Kane |
*/ |
@@ -50,29 +50,33 @@ struct ChromeCFAllocatorLeopards { |
CFAllocatorContext _context; |
}; |
-// TODO(avi): update upon source release; http://crbug.com/74589 |
struct ChromeCFAllocatorLion { |
- ChromeCFRuntimeBase _base; |
- // CFAllocator in Darwin 9 included a complete copy of _malloc_zone_t. The |
- // version in Darwin 10 had an abbreviated _malloc_zone_t that ended after the |
- // version/"reserved" field (see above). Darwin 11 appears to have a truncated |
- // _malloc_zone_t as well, but two fields larger than 9/10. |
- void* presumedSizeFunctionPtr; |
- void* presumedMallocFunctionPtr; |
- void* presumedCallocFunctionPtr; |
- void* presumedVallocFunctionPtr; |
- void* presumedFreeFunctionPtr; |
- void* presumedReallocFunctionPtr; |
- void* presumedDestroyFunctionPtr; |
- const char *zone_name; |
- void* presumedBatchMallocFunctionPtr; |
- void* presumedBatchFreeFunctionPtr; |
- void* presumedIntrospectStructPtr; |
- void* presumedReservedSlashVersion; // always 6 in CFAllocators |
- void* presumedMemalignFunctionPtr; |
- void* presumedFreeDefiniteSizeFunctionPtr; |
- CFAllocatorRef _allocator; |
- CFAllocatorContext _context; |
+ ChromeCFRuntimeBase _base; |
+#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED |
+ size_t (*size)(struct _malloc_zone_t *zone, const void *ptr); /* returns the size of a block or 0 if not in this zone; must be fast, especially for negative answers */ |
+ void *(*malloc)(struct _malloc_zone_t *zone, size_t size); |
+ void *(*calloc)(struct _malloc_zone_t *zone, size_t num_items, size_t size); /* same as malloc, but block returned is set to zero */ |
+ void *(*valloc)(struct _malloc_zone_t *zone, size_t size); /* same as malloc, but block returned is set to zero and is guaranteed to be page aligned */ |
+ void (*free)(struct _malloc_zone_t *zone, void *ptr); |
+ void *(*realloc)(struct _malloc_zone_t *zone, void *ptr, size_t size); |
+ void (*destroy)(struct _malloc_zone_t *zone); /* zone is destroyed and all memory reclaimed */ |
+ const char *zone_name; |
+ |
+ /* Optional batch callbacks; these may be NULL */ |
+ unsigned (*batch_malloc)(struct _malloc_zone_t *zone, size_t size, void **results, unsigned num_requested); /* given a size, returns pointers capable of holding that size; returns the number of pointers allocated (maybe 0 or less than num_requested) */ |
+ void (*batch_free)(struct _malloc_zone_t *zone, void **to_be_freed, unsigned num_to_be_freed); /* frees all the pointers in to_be_freed; note that to_be_freed may be overwritten during the process */ |
+ |
+ struct malloc_introspection_t *introspect; |
+ unsigned version; |
+ |
+ /* aligned memory allocation. The callback may be NULL. */ |
+ void *(*memalign)(struct _malloc_zone_t *zone, size_t alignment, size_t size); |
+ |
+ /* free a pointer known to be in zone and known to have the given size. The callback may be NULL. */ |
+ void (*free_definite_size)(struct _malloc_zone_t *zone, void *ptr, size_t size); |
+#endif |
+ CFAllocatorRef _allocator; |
+ CFAllocatorContext _context; |
}; |
#endif // THIRD_PARTY_APPLE_APSL_CFBASE_H_ |