diff options
author | Damjan Marion <damarion@cisco.com> | 2021-10-12 20:30:02 +0200 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2021-11-10 16:45:23 +0000 |
commit | 56f54af21d18f9fdd471b81db77a3942b0aa4d9c (patch) | |
tree | 80c5e9681dc209cdbb3c54d7205bc07ad4379f69 /src/vppinfra/hash.h | |
parent | 904638f4625c82d166d67870f9cf8088dd29a8b2 (diff) |
vppinfra: new memcpy for x86_64
Change-Id: I5a5055580479960ac53e3f989aa188faf57fb05d
Type: improvement
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vppinfra/hash.h')
-rw-r--r-- | src/vppinfra/hash.h | 15 |
1 files changed, 13 insertions, 2 deletions
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); } |