OLD | NEW |
| (Empty) |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/process_util_unittest_mac.h" | |
6 | |
7 #import <Foundation/Foundation.h> | |
8 #include <CoreFoundation/CoreFoundation.h> | |
9 | |
10 #if !defined(ARCH_CPU_64_BITS) | |
11 | |
12 // In the 64-bit environment, the Objective-C 2.0 Runtime Reference states | |
13 // that sizeof(anInstance) is constrained to 32 bits. That's not necessarily | |
14 // "psychotically big" and in fact a 64-bit program is expected to be able to | |
15 // successfully allocate an object that large, likely reserving a good deal of | |
16 // swap space. The only way to test the behavior of memory exhaustion for | |
17 // Objective-C allocation in this environment would be to loop over allocation | |
18 // of these large objects, but that would slowly consume all available memory | |
19 // and cause swap file proliferation. That's bad, so this behavior isn't | |
20 // tested in the 64-bit environment. | |
21 | |
22 @interface PsychoticallyBigObjCObject : NSObject | |
23 { | |
24 // In the 32-bit environment, the compiler limits Objective-C objects to | |
25 // < 2GB in size. | |
26 int justUnder2Gigs_[(2U * 1024 * 1024 * 1024 - 1) / sizeof(int)]; | |
27 } | |
28 | |
29 @end | |
30 | |
31 @implementation PsychoticallyBigObjCObject | |
32 | |
33 @end | |
34 | |
35 namespace base { | |
36 | |
37 void* AllocatePsychoticallyBigObjCObject() { | |
38 return [[PsychoticallyBigObjCObject alloc] init]; | |
39 } | |
40 | |
41 } // namespace base | |
42 | |
43 #endif // ARCH_CPU_64_BITS | |
44 | |
45 namespace base { | |
46 | |
47 void* AllocateViaCFAllocatorSystemDefault(ssize_t size) { | |
48 return CFAllocatorAllocate(kCFAllocatorSystemDefault, size, 0); | |
49 } | |
50 | |
51 void* AllocateViaCFAllocatorMalloc(ssize_t size) { | |
52 return CFAllocatorAllocate(kCFAllocatorMalloc, size, 0); | |
53 } | |
54 | |
55 void* AllocateViaCFAllocatorMallocZone(ssize_t size) { | |
56 return CFAllocatorAllocate(kCFAllocatorMallocZone, size, 0); | |
57 } | |
58 | |
59 } // namespace base | |
OLD | NEW |