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

Side by Side Diff: third_party/tcmalloc/chromium/src/heap-checker.cc

Issue 12388070: Count m(un)map for each stacktrace in MemoryRegionMap instead of HeapProfileTable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed willchan's comments Created 7 years, 9 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 2185 matching lines...) Expand 10 before | Expand all | Expand 10 after
2196 "BeforeConstructorsLocked called multiple times"); 2196 "BeforeConstructorsLocked called multiple times");
2197 #ifdef ADDRESS_SANITIZER 2197 #ifdef ADDRESS_SANITIZER
2198 // AddressSanitizer's custom malloc conflicts with HeapChecker. 2198 // AddressSanitizer's custom malloc conflicts with HeapChecker.
2199 return; 2199 return;
2200 #endif 2200 #endif
2201 // Set hooks early to crash if 'new' gets called before we make heap_profile, 2201 // Set hooks early to crash if 'new' gets called before we make heap_profile,
2202 // and make sure no other hooks existed: 2202 // and make sure no other hooks existed:
2203 RAW_CHECK(MallocHook::AddNewHook(&NewHook), ""); 2203 RAW_CHECK(MallocHook::AddNewHook(&NewHook), "");
2204 RAW_CHECK(MallocHook::AddDeleteHook(&DeleteHook), ""); 2204 RAW_CHECK(MallocHook::AddDeleteHook(&DeleteHook), "");
2205 constructor_heap_profiling = true; 2205 constructor_heap_profiling = true;
2206 MemoryRegionMap::Init(1); 2206 MemoryRegionMap::Init(1, /* use_buckets */ false);
2207 // Set up MemoryRegionMap with (at least) one caller stack frame to record 2207 // Set up MemoryRegionMap with (at least) one caller stack frame to record
2208 // (important that it's done before HeapProfileTable creation below). 2208 // (important that it's done before HeapProfileTable creation below).
2209 Allocator::Init(); 2209 Allocator::Init();
2210 RAW_CHECK(heap_profile == NULL, ""); 2210 RAW_CHECK(heap_profile == NULL, "");
2211 heap_profile = new(Allocator::Allocate(sizeof(HeapProfileTable))) 2211 heap_profile = new(Allocator::Allocate(sizeof(HeapProfileTable)))
2212 HeapProfileTable(&Allocator::Allocate, &Allocator::Free); 2212 HeapProfileTable(&Allocator::Allocate, &Allocator::Free);
2213 RAW_VLOG(10, "Starting tracking the heap"); 2213 RAW_VLOG(10, "Starting tracking the heap");
2214 heap_checker_on = true; 2214 heap_checker_on = true;
2215 } 2215 }
2216 2216
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
2368 // static 2368 // static
2369 const void* HeapLeakChecker::GetAllocCaller(void* ptr) { 2369 const void* HeapLeakChecker::GetAllocCaller(void* ptr) {
2370 // this is used only in the unittest, so the heavy checks are fine 2370 // this is used only in the unittest, so the heavy checks are fine
2371 HeapProfileTable::AllocInfo info; 2371 HeapProfileTable::AllocInfo info;
2372 { SpinLockHolder l(&heap_checker_lock); 2372 { SpinLockHolder l(&heap_checker_lock);
2373 RAW_CHECK(heap_profile->FindAllocDetails(ptr, &info), ""); 2373 RAW_CHECK(heap_profile->FindAllocDetails(ptr, &info), "");
2374 } 2374 }
2375 RAW_CHECK(info.stack_depth >= 1, ""); 2375 RAW_CHECK(info.stack_depth >= 1, "");
2376 return info.call_stack[0]; 2376 return info.call_stack[0];
2377 } 2377 }
OLDNEW
« no previous file with comments | « third_party/tcmalloc/chromium/src/deep-heap-profile.cc ('k') | third_party/tcmalloc/chromium/src/heap-profile-stats.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698