Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(640)

Side by Side Diff: third_party/tcmalloc/chromium/src/malloc_hook.cc

Issue 9323026: [NOT TO COMMIT!] r109: Diff of the current tcmalloc from the original google-perftools r109. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2005, Google Inc. 1 // Copyright (c) 2005, Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 void InitialPreMMapHook(const void* start, 121 void InitialPreMMapHook(const void* start,
122 size_t size, 122 size_t size,
123 int protection, 123 int protection,
124 int flags, 124 int flags,
125 int fd, 125 int fd,
126 off_t offset) { 126 off_t offset) {
127 perftools_pthread_once(&once, &RemoveInitialHooksAndCallInitializers); 127 perftools_pthread_once(&once, &RemoveInitialHooksAndCallInitializers);
128 MallocHook::InvokePreMmapHook(start, size, protection, flags, fd, offset); 128 MallocHook::InvokePreMmapHook(start, size, protection, flags, fd, offset);
129 } 129 }
130 130
131 void InitialPreSbrkHook(ptrdiff_t increment) { 131 void InitialPreSbrkHook(std::ptrdiff_t increment) {
132 perftools_pthread_once(&once, &RemoveInitialHooksAndCallInitializers); 132 perftools_pthread_once(&once, &RemoveInitialHooksAndCallInitializers);
133 MallocHook::InvokePreSbrkHook(increment); 133 MallocHook::InvokePreSbrkHook(increment);
134 } 134 }
135 135
136 // This function is called at most once by one of the above initial malloc 136 // This function is called at most once by one of the above initial malloc
137 // hooks. It removes all initial hooks and initializes all other clients that 137 // hooks. It removes all initial hooks and initializes all other clients that
138 // want to get control at the very first memory allocation. The initializers 138 // want to get control at the very first memory allocation. The initializers
139 // may assume that the initial malloc hooks have been removed. The initializers 139 // may assume that the initial malloc hooks have been removed. The initializers
140 // may set up malloc hooks and allocate memory. 140 // may set up malloc hooks and allocate memory.
141 void RemoveInitialHooksAndCallInitializers() { 141 void RemoveInitialHooksAndCallInitializers() {
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 void MallocHook::InvokeMremapHookSlow(const void* result, 582 void MallocHook::InvokeMremapHookSlow(const void* result,
583 const void* old_addr, 583 const void* old_addr,
584 size_t old_size, 584 size_t old_size,
585 size_t new_size, 585 size_t new_size,
586 int flags, 586 int flags,
587 const void* new_addr) { 587 const void* new_addr) {
588 INVOKE_HOOKS(MremapHook, mremap_hooks_, (result, old_addr, old_size, new_size, 588 INVOKE_HOOKS(MremapHook, mremap_hooks_, (result, old_addr, old_size, new_size,
589 flags, new_addr)); 589 flags, new_addr));
590 } 590 }
591 591
592 void MallocHook::InvokePreSbrkHookSlow(ptrdiff_t increment) { 592 void MallocHook::InvokePreSbrkHookSlow(std::ptrdiff_t increment) {
593 INVOKE_HOOKS(PreSbrkHook, presbrk_hooks_, (increment)); 593 INVOKE_HOOKS(PreSbrkHook, presbrk_hooks_, (increment));
594 } 594 }
595 595
596 void MallocHook::InvokeSbrkHookSlow(const void* result, ptrdiff_t increment) { 596 void MallocHook::InvokeSbrkHookSlow(const void* result, std::ptrdiff_t increment ) {
597 INVOKE_HOOKS(SbrkHook, sbrk_hooks_, (result, increment)); 597 INVOKE_HOOKS(SbrkHook, sbrk_hooks_, (result, increment));
598 } 598 }
599 599
600 #undef INVOKE_HOOKS 600 #undef INVOKE_HOOKS
601 601
602 DEFINE_ATTRIBUTE_SECTION_VARS(google_malloc); 602 DEFINE_ATTRIBUTE_SECTION_VARS(google_malloc);
603 DECLARE_ATTRIBUTE_SECTION_VARS(google_malloc); 603 DECLARE_ATTRIBUTE_SECTION_VARS(google_malloc);
604 // actual functions are in debugallocation.cc or tcmalloc.cc 604 // actual functions are in debugallocation.cc or tcmalloc.cc
605 DEFINE_ATTRIBUTE_SECTION_VARS(malloc_hook); 605 DEFINE_ATTRIBUTE_SECTION_VARS(malloc_hook);
606 DECLARE_ATTRIBUTE_SECTION_VARS(malloc_hook); 606 DECLARE_ATTRIBUTE_SECTION_VARS(malloc_hook);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 int fd, __off64_t offset ) __THROW 792 int fd, __off64_t offset ) __THROW
793 ATTRIBUTE_SECTION(malloc_hook); 793 ATTRIBUTE_SECTION(malloc_hook);
794 void* mmap(void *start, size_t length,int prot, int flags, 794 void* mmap(void *start, size_t length,int prot, int flags,
795 int fd, off_t offset) __THROW 795 int fd, off_t offset) __THROW
796 ATTRIBUTE_SECTION(malloc_hook); 796 ATTRIBUTE_SECTION(malloc_hook);
797 int munmap(void* start, size_t length) __THROW 797 int munmap(void* start, size_t length) __THROW
798 ATTRIBUTE_SECTION(malloc_hook); 798 ATTRIBUTE_SECTION(malloc_hook);
799 void* mremap(void* old_addr, size_t old_size, size_t new_size, 799 void* mremap(void* old_addr, size_t old_size, size_t new_size,
800 int flags, ...) __THROW 800 int flags, ...) __THROW
801 ATTRIBUTE_SECTION(malloc_hook); 801 ATTRIBUTE_SECTION(malloc_hook);
802 void* sbrk(ptrdiff_t increment) __THROW 802 void* sbrk(std::ptrdiff_t increment) __THROW
803 ATTRIBUTE_SECTION(malloc_hook); 803 ATTRIBUTE_SECTION(malloc_hook);
804 } 804 }
805 805
806 extern "C" void* mmap64(void *start, size_t length, int prot, int flags, 806 extern "C" void* mmap64(void *start, size_t length, int prot, int flags,
807 int fd, __off64_t offset) __THROW { 807 int fd, __off64_t offset) __THROW {
808 MallocHook::InvokePreMmapHook(start, length, prot, flags, fd, offset); 808 MallocHook::InvokePreMmapHook(start, length, prot, flags, fd, offset);
809 void *result; 809 void *result;
810 if (!MallocHook::InvokeMmapReplacement( 810 if (!MallocHook::InvokeMmapReplacement(
811 start, length, prot, flags, fd, offset, &result)) { 811 start, length, prot, flags, fd, offset, &result)) {
812 result = do_mmap64(start, length, prot, flags, fd, offset); 812 result = do_mmap64(start, length, prot, flags, fd, offset);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 va_start(ap, flags); 847 va_start(ap, flags);
848 void *new_address = va_arg(ap, void *); 848 void *new_address = va_arg(ap, void *);
849 va_end(ap); 849 va_end(ap);
850 void* result = sys_mremap(old_addr, old_size, new_size, flags, new_address); 850 void* result = sys_mremap(old_addr, old_size, new_size, flags, new_address);
851 MallocHook::InvokeMremapHook(result, old_addr, old_size, new_size, flags, 851 MallocHook::InvokeMremapHook(result, old_addr, old_size, new_size, flags,
852 new_address); 852 new_address);
853 return result; 853 return result;
854 } 854 }
855 855
856 // libc's version: 856 // libc's version:
857 extern "C" void* __sbrk(ptrdiff_t increment); 857 extern "C" void* __sbrk(std::ptrdiff_t increment);
858 858
859 extern "C" void* sbrk(ptrdiff_t increment) __THROW { 859 extern "C" void* sbrk(std::ptrdiff_t increment) __THROW {
860 MallocHook::InvokePreSbrkHook(increment); 860 MallocHook::InvokePreSbrkHook(increment);
861 void *result = __sbrk(increment); 861 void *result = __sbrk(increment);
862 MallocHook::InvokeSbrkHook(result, increment); 862 MallocHook::InvokeSbrkHook(result, increment);
863 return result; 863 return result;
864 } 864 }
865 865
866 /*static*/void* MallocHook::UnhookedMMap(void *start, size_t length, int prot, 866 /*static*/void* MallocHook::UnhookedMMap(void *start, size_t length, int prot,
867 int flags, int fd, off_t offset) { 867 int flags, int fd, off_t offset) {
868 void* result; 868 void* result;
869 if (!MallocHook::InvokeMmapReplacement( 869 if (!MallocHook::InvokeMmapReplacement(
(...skipping 27 matching lines...) Expand all
897 /*static*/int MallocHook::UnhookedMUnmap(void *start, size_t length) { 897 /*static*/int MallocHook::UnhookedMUnmap(void *start, size_t length) {
898 int result; 898 int result;
899 if (!MallocHook::InvokeMunmapReplacement(start, length, &result)) { 899 if (!MallocHook::InvokeMunmapReplacement(start, length, &result)) {
900 result = munmap(start, length); 900 result = munmap(start, length);
901 } 901 }
902 return result; 902 return result;
903 } 903 }
904 904
905 #endif // defined(__linux) && 905 #endif // defined(__linux) &&
906 // (defined(__i386__) || defined(__x86_64__) || defined(__PPC__)) 906 // (defined(__i386__) || defined(__x86_64__) || defined(__PPC__))
OLDNEW
« no previous file with comments | « third_party/tcmalloc/chromium/src/linux_shadow_stacks.cc ('k') | third_party/tcmalloc/chromium/src/malloc_hook-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698