| Index: third_party/tcmalloc/chromium/src/tests/system-alloc_unittest.cc
|
| diff --git a/third_party/tcmalloc/chromium/src/tests/system-alloc_unittest.cc b/third_party/tcmalloc/chromium/src/tests/system-alloc_unittest.cc
|
| index c006425d707fcad02099261e1e6ebccb4f820c3f..f0259a19b2a26fa4b3213db78716d40bf9026f77 100644
|
| --- a/third_party/tcmalloc/chromium/src/tests/system-alloc_unittest.cc
|
| +++ b/third_party/tcmalloc/chromium/src/tests/system-alloc_unittest.cc
|
| @@ -40,8 +40,9 @@
|
| #endif
|
| #include <sys/types.h>
|
| #include <algorithm>
|
| +#include <limits>
|
| #include "base/logging.h" // for Check_GEImpl, Check_LTImpl, etc
|
| -#include <google/malloc_extension.h> // for MallocExtension::instance
|
| +#include <gperftools/malloc_extension.h> // for MallocExtension::instance
|
| #include "common.h" // for kAddressBits
|
|
|
| class ArraySysAllocator : public SysAllocator {
|
| @@ -83,7 +84,6 @@ public:
|
|
|
| void DumpStats() {
|
| }
|
| - void FlagsInitialized() {}
|
|
|
| private:
|
| static const int kArraySize = 8 * 1024 * 1024;
|
| @@ -115,14 +115,30 @@ TEST(AddressBits, CpuVirtualBits) {
|
| const int kPointerBits = 8 * sizeof(void*);
|
| const int kImplementedVirtualBits = NumImplementedVirtualBits();
|
|
|
| - CHECK_GE(kAddressBits, min(kImplementedVirtualBits, kPointerBits));
|
| + CHECK_GE(kAddressBits, std::min(kImplementedVirtualBits, kPointerBits));
|
| }
|
| #endif
|
|
|
| static void TestBasicRetryFailTest() {
|
| // Check with the allocator still works after a failed allocation.
|
| - void* p = malloc(1ULL << 50); // Asking for 1P ram
|
| - CHECK(p == NULL);
|
| + //
|
| + // There is no way to call malloc and guarantee it will fail. malloc takes a
|
| + // size_t parameter and the C++ standard does not constrain the size of
|
| + // size_t. For example, consider an implementation where size_t is 32 bits
|
| + // and pointers are 64 bits.
|
| + //
|
| + // It is likely, though, that sizeof(size_t) == sizeof(void*). In that case,
|
| + // the first allocation here might succeed but the second allocation must
|
| + // fail.
|
| + //
|
| + // If the second allocation succeeds, you will have to rewrite or
|
| + // disable this test.
|
| + // The weird parens are to avoid macro-expansion of 'max' on windows.
|
| + const size_t kHugeSize = (std::numeric_limits<size_t>::max)() / 2;
|
| + void* p1 = malloc(kHugeSize);
|
| + void* p2 = malloc(kHugeSize);
|
| + CHECK(p2 == NULL);
|
| + if (p1 != NULL) free(p1);
|
|
|
| char* q = new char[1024];
|
| CHECK(q != NULL);
|
|
|