clib_memcpy (d, s, sizeof (eh_copy_t));
return;
}
-
+ /*
+ * Stop now if the data_bytes field is zero, to avoid the cache
+ * miss consequences of spraying [functionally harmless] junk into
+ * un-prefetched rewrite space.
+ */
+ if (PREDICT_FALSE (h0->data_bytes == 0))
+ return;
#define _(i) \
do { \
return;
}
+ /*
+ * Stop now if both rewrite data_bytes fields are zero, to avoid the cache
+ * miss consequences of spraying [functionally harmless] junk into
+ * un-prefetched rewrite space.
+ */
+ if (PREDICT_FALSE (h0->data_bytes + h1->data_bytes == 0))
+ return;
+
#define _(i) \
do { \
if (most_likely_size > ((i)-1)*sizeof (vnet_rewrite_data_t)) \