From 56f54af21d18f9fdd471b81db77a3942b0aa4d9c Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Tue, 12 Oct 2021 20:30:02 +0200 Subject: vppinfra: new memcpy for x86_64 Change-Id: I5a5055580479960ac53e3f989aa188faf57fb05d Type: improvement Signed-off-by: Damjan Marion --- src/vppinfra/hash.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/vppinfra/hash.h') diff --git a/src/vppinfra/hash.h b/src/vppinfra/hash.h index e4a65d21e65..7d4ed04dc4d 100644 --- a/src/vppinfra/hash.h +++ b/src/vppinfra/hash.h @@ -278,9 +278,20 @@ uword hash_bytes (void *v); always_inline void hash_set_mem_alloc (uword ** h, const void *key, uword v) { + int objsize = __builtin_object_size (key, 0); size_t ksz = hash_header (*h)->user; - void *copy = clib_mem_alloc (ksz); - clib_memcpy_fast (copy, key, ksz); + void *copy; + if (objsize > 0) + { + ASSERT (objsize == ksz); + copy = clib_mem_alloc (objsize); + clib_memcpy_fast (copy, key, objsize); + } + else + { + copy = clib_mem_alloc (ksz); + clib_memcpy_fast (copy, key, ksz); + } hash_set_mem (*h, copy, v); } -- cgit 1.2.3-korg