Chromium Code Reviews| 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; |