Move remote dealloc to slow path

It is only ever called in a tail position, so slow path means it is just
a jump, but improves the local deallocation fast path's codegen
considerably.
This commit is contained in:
Matthew Parkinson
2019-07-09 10:52:52 +01:00
parent e240dd279a
commit 9fd238d5fa

View File

@@ -1370,15 +1370,8 @@ namespace snmalloc
large_allocator.dealloc(slab, large_class);
}
#if defined(__GNUC__) && !defined(__clang__) && !defined(__OPTIMIZE__)
// Don't force this to be always inlined in debug builds with GCC, because
// it will fail and then raise an error.
inline
#else
SNMALLOC_FAST_PATH
#endif
void
remote_dealloc(RemoteAllocator* target, void* p, sizeclass_t sizeclass)
SNMALLOC_SLOW_PATH
void remote_dealloc(RemoteAllocator* target, void* p, sizeclass_t sizeclass)
{
MEASURE_TIME(remote_dealloc, 4, 16);
assert(target->id() != id());