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:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user