| Index: base/process_util_mac.mm
|
| ===================================================================
|
| --- base/process_util_mac.mm (revision 88826)
|
| +++ base/process_util_mac.mm (working copy)
|
| @@ -2,7 +2,6 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -
|
| #include "base/process_util.h"
|
|
|
| #import <Cocoa/Cocoa.h>
|
| @@ -19,7 +18,6 @@
|
| #include <sys/mman.h>
|
| #include <sys/sysctl.h>
|
| #include <sys/types.h>
|
| -#include <sys/utsname.h>
|
| #include <sys/wait.h>
|
|
|
| #include <new>
|
| @@ -29,6 +27,7 @@
|
| #include "base/eintr_wrapper.h"
|
| #include "base/hash_tables.h"
|
| #include "base/logging.h"
|
| +#include "base/mac/mac_util.h"
|
| #include "base/string_util.h"
|
| #include "base/sys_info.h"
|
| #include "base/sys_string_conversions.h"
|
| @@ -622,28 +621,25 @@
|
|
|
| // === Core Foundation CFAllocators ===
|
|
|
| -bool CanGetContextForCFAllocator(long darwin_version) {
|
| +bool CanGetContextForCFAllocator() {
|
| // TODO(avi): remove at final release; http://crbug.com/74589
|
| - if (darwin_version == 11) {
|
| + if (base::mac::IsOSLion()) {
|
| NSLog(@"Unsure about the internals of CFAllocator but going to patch them "
|
| "anyway. Watch out for crashes inside of CFAllocatorAllocate.");
|
| }
|
| - return darwin_version == 9 ||
|
| - darwin_version == 10 ||
|
| - darwin_version == 11;
|
| + return !base::mac::IsOSLaterThanLion();
|
| }
|
|
|
| -CFAllocatorContext* ContextForCFAllocator(CFAllocatorRef allocator,
|
| - long darwin_version) {
|
| - if (darwin_version == 9 || darwin_version == 10) {
|
| - ChromeCFAllocator9and10* our_allocator =
|
| - const_cast<ChromeCFAllocator9and10*>(
|
| - reinterpret_cast<const ChromeCFAllocator9and10*>(allocator));
|
| +CFAllocatorContext* ContextForCFAllocator(CFAllocatorRef allocator) {
|
| + if (base::mac::IsOSLeopard() || base::mac::IsOSSnowLeopard()) {
|
| + ChromeCFAllocatorLeopards* our_allocator =
|
| + const_cast<ChromeCFAllocatorLeopards*>(
|
| + reinterpret_cast<const ChromeCFAllocatorLeopards*>(allocator));
|
| return &our_allocator->_context;
|
| - } else if (darwin_version == 11) {
|
| - ChromeCFAllocator11* our_allocator =
|
| - const_cast<ChromeCFAllocator11*>(
|
| - reinterpret_cast<const ChromeCFAllocator11*>(allocator));
|
| + } else if (base::mac::IsOSLion()) {
|
| + ChromeCFAllocatorLion* our_allocator =
|
| + const_cast<ChromeCFAllocatorLion*>(
|
| + reinterpret_cast<const ChromeCFAllocatorLion*>(allocator));
|
| return &our_allocator->_context;
|
| } else {
|
| return NULL;
|
| @@ -714,18 +710,6 @@
|
|
|
| g_oom_killer_enabled = true;
|
|
|
| - // Not SysInfo::OperatingSystemVersionNumbers as that calls through to Gestalt
|
| - // which ends up (on > 10.6) spawning threads.
|
| - struct utsname machine_info;
|
| - if (uname(&machine_info)) {
|
| - return;
|
| - }
|
| -
|
| - // The string machine_info.release is the xnu/Darwin version number, "9.xxx"
|
| - // on Mac OS X 10.5, and "10.xxx" on Mac OS X 10.6. See
|
| - // http://en.wikipedia.org/wiki/Darwin_(operating_system) .
|
| - long darwin_version = strtol(machine_info.release, NULL, 10);
|
| -
|
| // === C malloc/calloc/valloc/realloc/posix_memalign ===
|
|
|
| // This approach is not perfect, as requests for amounts of memory larger than
|
| @@ -743,7 +727,7 @@
|
| !g_old_memalign_purgeable) << "Old allocators unexpectedly non-null";
|
|
|
| // See http://trac.webkit.org/changeset/53362/trunk/Tools/DumpRenderTree/mac
|
| - bool zone_allocators_protected = darwin_version > 10;
|
| + bool zone_allocators_protected = base::mac::IsOSLionOrLater();
|
|
|
| ChromeMallocZone* default_zone =
|
| reinterpret_cast<ChromeMallocZone*>(malloc_default_zone());
|
| @@ -858,26 +842,25 @@
|
| !g_old_cfallocator_malloc_zone)
|
| << "Old allocators unexpectedly non-null";
|
|
|
| - bool cf_allocator_internals_known =
|
| - CanGetContextForCFAllocator(darwin_version);
|
| + bool cf_allocator_internals_known = CanGetContextForCFAllocator();
|
|
|
| if (cf_allocator_internals_known) {
|
| CFAllocatorContext* context =
|
| - ContextForCFAllocator(kCFAllocatorSystemDefault, darwin_version);
|
| + ContextForCFAllocator(kCFAllocatorSystemDefault);
|
| CHECK(context) << "Failed to get context for kCFAllocatorSystemDefault.";
|
| g_old_cfallocator_system_default = context->allocate;
|
| CHECK(g_old_cfallocator_system_default)
|
| << "Failed to get kCFAllocatorSystemDefault allocation function.";
|
| context->allocate = oom_killer_cfallocator_system_default;
|
|
|
| - context = ContextForCFAllocator(kCFAllocatorMalloc, darwin_version);
|
| + context = ContextForCFAllocator(kCFAllocatorMalloc);
|
| CHECK(context) << "Failed to get context for kCFAllocatorMalloc.";
|
| g_old_cfallocator_malloc = context->allocate;
|
| CHECK(g_old_cfallocator_malloc)
|
| << "Failed to get kCFAllocatorMalloc allocation function.";
|
| context->allocate = oom_killer_cfallocator_malloc;
|
|
|
| - context = ContextForCFAllocator(kCFAllocatorMallocZone, darwin_version);
|
| + context = ContextForCFAllocator(kCFAllocatorMallocZone);
|
| CHECK(context) << "Failed to get context for kCFAllocatorMallocZone.";
|
| g_old_cfallocator_malloc_zone = context->allocate;
|
| CHECK(g_old_cfallocator_malloc_zone)
|
|
|