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);
|
large_allocator.dealloc(slab, large_class);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__GNUC__) && !defined(__clang__) && !defined(__OPTIMIZE__)
|
SNMALLOC_SLOW_PATH
|
||||||
// Don't force this to be always inlined in debug builds with GCC, because
|
void remote_dealloc(RemoteAllocator* target, void* p, sizeclass_t sizeclass)
|
||||||
// it will fail and then raise an error.
|
|
||||||
inline
|
|
||||||
#else
|
|
||||||
SNMALLOC_FAST_PATH
|
|
||||||
#endif
|
|
||||||
void
|
|
||||||
remote_dealloc(RemoteAllocator* target, void* p, sizeclass_t sizeclass)
|
|
||||||
{
|
{
|
||||||
MEASURE_TIME(remote_dealloc, 4, 16);
|
MEASURE_TIME(remote_dealloc, 4, 16);
|
||||||
assert(target->id() != id());
|
assert(target->id() != id());
|
||||||
|
|||||||
Reference in New Issue
Block a user