Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Remove c-11 memcpy checks from perf-critical code
[vpp.git]
/
src
/
vppinfra
/
bihash_template.c
diff --git
a/src/vppinfra/bihash_template.c
b/src/vppinfra/bihash_template.c
index
e218f4b
..
6980538
100644
(file)
--- a/
src/vppinfra/bihash_template.c
+++ b/
src/vppinfra/bihash_template.c
@@
-295,7
+295,7
@@
BV (make_working_copy) (BVT (clib_bihash) * h, BVT (clib_bihash_bucket) * b)
v = BV (clib_bihash_get_value) (h, b->offset);
v = BV (clib_bihash_get_value) (h, b->offset);
-
_clib_memcpy
(working_copy, v, sizeof (*v) * (1 << b->log2_pages));
+
clib_memcpy_fast
(working_copy, v, sizeof (*v) * (1 << b->log2_pages));
working_bucket.as_u64 = b->as_u64;
working_bucket.offset = BV (clib_bihash_get_offset) (h, working_copy);
CLIB_MEMORY_BARRIER ();
working_bucket.as_u64 = b->as_u64;
working_bucket.offset = BV (clib_bihash_get_offset) (h, working_copy);
CLIB_MEMORY_BARRIER ();
@@
-338,8
+338,8
@@
BV (split_and_rehash)
/* Empty slot */
if (BV (clib_bihash_is_free) (&(new_v->kvp[j])))
{
/* Empty slot */
if (BV (clib_bihash_is_free) (&(new_v->kvp[j])))
{
-
_clib_memcpy
(&(new_v->kvp[j]), &(old_values->kvp[i]),
- sizeof (new_v->kvp[j]));
+
clib_memcpy_fast
(&(new_v->kvp[j]), &(old_values->kvp[i]),
+
sizeof (new_v->kvp[j]));
goto doublebreak;
}
}
goto doublebreak;
}
}
@@
-383,8
+383,8
@@
BV (split_and_rehash_linear)
if (BV (clib_bihash_is_free) (&(new_values->kvp[j])))
{
/* Copy the old value and move along */
if (BV (clib_bihash_is_free) (&(new_values->kvp[j])))
{
/* Copy the old value and move along */
-
_clib_memcpy
(&(new_values->kvp[j]), &(old_values->kvp[i]),
- sizeof (new_values->kvp[j]));
+
clib_memcpy_fast
(&(new_values->kvp[j]), &(old_values->kvp[i]),
+
sizeof (new_values->kvp[j]));
j++;
goto doublebreak;
}
j++;
goto doublebreak;
}
@@
-472,7
+472,7
@@
static inline int BV (clib_bihash_add_del_inline)
if (!memcmp (&(v->kvp[i]), &add_v->key, sizeof (add_v->key)))
{
CLIB_MEMORY_BARRIER (); /* Add a delay */
if (!memcmp (&(v->kvp[i]), &add_v->key, sizeof (add_v->key)))
{
CLIB_MEMORY_BARRIER (); /* Add a delay */
-
_clib_memcpy
(&(v->kvp[i]), add_v, sizeof (*add_v));
+
clib_memcpy_fast
(&(v->kvp[i]), add_v, sizeof (*add_v));
BV (clib_bihash_unlock_bucket) (b);
return (0);
}
BV (clib_bihash_unlock_bucket) (b);
return (0);
}
@@
-488,10
+488,11
@@
static inline int BV (clib_bihash_add_del_inline)
* Copy the value first, so that if a reader manages
* to match the new key, the value will be right...
*/
* Copy the value first, so that if a reader manages
* to match the new key, the value will be right...
*/
-
_clib_memcpy
(&(v->kvp[i].value),
- &add_v->value, sizeof (add_v->value));
+
clib_memcpy_fast
(&(v->kvp[i].value),
+
&add_v->value, sizeof (add_v->value));
CLIB_MEMORY_BARRIER (); /* Make sure the value has settled */
CLIB_MEMORY_BARRIER (); /* Make sure the value has settled */
- _clib_memcpy (&(v->kvp[i]), &add_v->key, sizeof (add_v->key));
+ clib_memcpy_fast (&(v->kvp[i]), &add_v->key,
+ sizeof (add_v->key));
b->refcnt++;
ASSERT (b->refcnt > 0);
BV (clib_bihash_unlock_bucket) (b);
b->refcnt++;
ASSERT (b->refcnt > 0);
BV (clib_bihash_unlock_bucket) (b);
@@
-506,7
+507,7
@@
static inline int BV (clib_bihash_add_del_inline)
if (is_stale_cb (&(v->kvp[i]), arg))
{
CLIB_MEMORY_BARRIER ();
if (is_stale_cb (&(v->kvp[i]), arg))
{
CLIB_MEMORY_BARRIER ();
-
_clib_memcpy
(&(v->kvp[i]), add_v, sizeof (*add_v));
+
clib_memcpy_fast
(&(v->kvp[i]), add_v, sizeof (*add_v));
BV (clib_bihash_unlock_bucket) (b);
return (0);
}
BV (clib_bihash_unlock_bucket) (b);
return (0);
}
@@
-602,7
+603,7
@@
static inline int BV (clib_bihash_add_del_inline)
{
if (BV (clib_bihash_is_free) (&(new_v->kvp[i])))
{
{
if (BV (clib_bihash_is_free) (&(new_v->kvp[i])))
{
-
_clib_memcpy
(&(new_v->kvp[i]), add_v, sizeof (*add_v));
+
clib_memcpy_fast
(&(new_v->kvp[i]), add_v, sizeof (*add_v));
goto expand_ok;
}
}
goto expand_ok;
}
}