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

Unified Diff: third_party/WebKit/Source/wtf/PartitionAlloc.h

Issue 1391933004: [Tracing] Add hook to PartitionAlloc for heap profiling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/wtf/PartitionAlloc.h
diff --git a/third_party/WebKit/Source/wtf/PartitionAlloc.h b/third_party/WebKit/Source/wtf/PartitionAlloc.h
index b0e233f4e2d24a442be2936fc08401c1fddc2866..c028773303e3da43dadd4d754c0f681b47103e67 100644
--- a/third_party/WebKit/Source/wtf/PartitionAlloc.h
+++ b/third_party/WebKit/Source/wtf/PartitionAlloc.h
@@ -411,6 +411,9 @@ WTF_EXPORT NEVER_INLINE void* partitionReallocGeneric(PartitionRootGeneric*, voi
WTF_EXPORT void partitionDumpStats(PartitionRoot*, const char* partitionName, bool isLightDump, PartitionStatsDumper*);
WTF_EXPORT void partitionDumpStatsGeneric(PartitionRootGeneric*, const char* partitionName, bool isLightDump, PartitionStatsDumper*);
+extern WTF_EXPORT void (*partitionAllocHookAlloc)(void* addr, size_t size);
Primiano Tucci (use gerrit) 2015/10/12 16:36:46 Hmm I think that if you split this into the actual
Ruud van Asseldonk 2015/10/13 10:42:18 Done.
+extern WTF_EXPORT void (*partitionAllocHookFree)(void* addr);
+
ALWAYS_INLINE PartitionFreelistEntry* partitionFreelistMask(PartitionFreelistEntry* ptr)
{
// We use bswap on little endian as a fast mask for two reasons:
@@ -701,6 +704,10 @@ ALWAYS_INLINE void* partitionAllocGenericFlags(PartitionRootGeneric* root, int f
spinLockLock(&root->lock);
void* ret = partitionBucketAlloc(root, flags, size, bucket);
spinLockUnlock(&root->lock);
+
+ if (UNLIKELY(partitionAllocHookAlloc != nullptr))
Primiano Tucci (use gerrit) 2015/10/12 16:36:46 see my previous comment about locking. I think you
Primiano Tucci (use gerrit) 2015/10/12 16:36:46 Also, if you hook only partitionAllocGeneric you w
Ruud van Asseldonk 2015/10/13 10:42:18 Oooops, should have hooked |partitionBucketAlloc|
+ partitionAllocHookAlloc(ret, size);
+
return ret;
#endif
}
@@ -717,6 +724,9 @@ ALWAYS_INLINE void partitionFreeGeneric(PartitionRootGeneric* root, void* ptr)
#else
ASSERT(root->initialized);
+ if (UNLIKELY(partitionAllocHookFree != nullptr))
Primiano Tucci (use gerrit) 2015/10/12 16:36:46 ditto
Ruud van Asseldonk 2015/10/13 10:42:18 Yes.
+ partitionAllocHookFree(ptr);
+
if (UNLIKELY(!ptr))
return;

Powered by Google App Engine
This is Rietveld 408576698