OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/process_util.h" | 5 #include "base/process_util.h" |
6 | 6 |
7 #include <ctype.h> | 7 #include <ctype.h> |
8 #include <dirent.h> | 8 #include <dirent.h> |
9 #include <dlfcn.h> | 9 #include <dlfcn.h> |
10 #include <errno.h> | 10 #include <errno.h> |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
507 } | 507 } |
508 | 508 |
509 void OnNoMemory() { | 509 void OnNoMemory() { |
510 OnNoMemorySize(0); | 510 OnNoMemorySize(0); |
511 } | 511 } |
512 | 512 |
513 } // namespace | 513 } // namespace |
514 | 514 |
515 extern "C" { | 515 extern "C" { |
516 | 516 |
517 #if defined(LINUX_USE_TCMALLOC) | 517 #if !defined(LINUX_USE_TCMALLOC) |
518 | |
519 int tc_set_new_mode(int mode); | |
520 | |
521 #else // defined(LINUX_USE_TCMALLOC) | |
522 | 518 |
523 typedef void* (*malloc_type)(size_t size); | 519 typedef void* (*malloc_type)(size_t size); |
524 typedef void* (*valloc_type)(size_t size); | 520 typedef void* (*valloc_type)(size_t size); |
525 typedef void* (*pvalloc_type)(size_t size); | 521 typedef void* (*pvalloc_type)(size_t size); |
526 | 522 |
527 typedef void* (*calloc_type)(size_t nmemb, size_t size); | 523 typedef void* (*calloc_type)(size_t nmemb, size_t size); |
528 typedef void* (*realloc_type)(void *ptr, size_t size); | 524 typedef void* (*realloc_type)(void *ptr, size_t size); |
529 typedef void* (*memalign_type)(size_t boundary, size_t size); | 525 typedef void* (*memalign_type)(size_t boundary, size_t size); |
530 | 526 |
531 typedef int (*posix_memalign_type)(void **memptr, size_t alignment, | 527 typedef int (*posix_memalign_type)(void **memptr, size_t alignment, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 DIE_ON_OOM_1(malloc) | 573 DIE_ON_OOM_1(malloc) |
578 DIE_ON_OOM_1(valloc) | 574 DIE_ON_OOM_1(valloc) |
579 DIE_ON_OOM_1(pvalloc) | 575 DIE_ON_OOM_1(pvalloc) |
580 | 576 |
581 DIE_ON_OOM_2(calloc, size_t) | 577 DIE_ON_OOM_2(calloc, size_t) |
582 DIE_ON_OOM_2(realloc, void*) | 578 DIE_ON_OOM_2(realloc, void*) |
583 DIE_ON_OOM_2(memalign, size_t) | 579 DIE_ON_OOM_2(memalign, size_t) |
584 | 580 |
585 DIE_ON_OOM_3INT(posix_memalign) | 581 DIE_ON_OOM_3INT(posix_memalign) |
586 | 582 |
587 #endif // defined(LINUX_USE_TCMALLOC) | 583 #endif // !defined(LINUX_USE_TCMALLOC) |
588 | 584 |
589 } // extern C | 585 } // extern C |
590 | 586 |
591 void EnableTerminationOnOutOfMemory() { | 587 void EnableTerminationOnOutOfMemory() { |
592 // Set the new-out of memory handler. | 588 // Set the new-out of memory handler. |
593 std::set_new_handler(&OnNoMemory); | 589 std::set_new_handler(&OnNoMemory); |
594 // If we're using glibc's allocator, the above functions will override | 590 // If we're using glibc's allocator, the above functions will override |
595 // malloc and friends and make them die on out of memory. | 591 // malloc and friends and make them die on out of memory. |
596 #if defined(LINUX_USE_TCMALLOC) | |
597 // For tcmalloc, we just need to tell it to behave like new. | |
598 tc_set_new_mode(1); | |
599 #endif | |
600 } | 592 } |
601 | 593 |
602 } // namespace base | 594 } // namespace base |
OLD | NEW |