Four byte optimized memcpy.
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -103,6 +103,24 @@ memcpy (void *s1, /**< destination */
|
|||||||
const void *s2, /**< source */
|
const void *s2, /**< source */
|
||||||
size_t n) /**< bytes number */
|
size_t n) /**< bytes number */
|
||||||
{
|
{
|
||||||
|
/* Aligned fast case. */
|
||||||
|
if (n >= 4 && !(((uintptr_t) s1) & 0x3) && !(((uintptr_t) s2) & 0x3))
|
||||||
|
{
|
||||||
|
size_t chunks = (n >> 2);
|
||||||
|
uint32_t *area1_p = (uint32_t *) s1;
|
||||||
|
const uint32_t *area2_p = (const uint32_t *) s2;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
*area1_p++ = *area2_p++;
|
||||||
|
}
|
||||||
|
while (--chunks);
|
||||||
|
|
||||||
|
n &= 0x3;
|
||||||
|
s1 = area1_p;
|
||||||
|
s2 = area2_p;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t *area1_p = (uint8_t *) s1;
|
uint8_t *area1_p = (uint8_t *) s1;
|
||||||
const uint8_t *area2_p = (const uint8_t *) s2;
|
const uint8_t *area2_p = (const uint8_t *) s2;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user