From 64f49385ae15a2f3ff3039570db2682d56540b4f Mon Sep 17 00:00:00 2001 From: Zoltan Herczeg Date: Wed, 22 Jun 2016 03:15:04 -0700 Subject: [PATCH] Four byte optimized memcpy. JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com --- jerry-libc/jerry-libc.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/jerry-libc/jerry-libc.c b/jerry-libc/jerry-libc.c index e6d056c1e..fbfda73ec 100644 --- a/jerry-libc/jerry-libc.c +++ b/jerry-libc/jerry-libc.c @@ -103,6 +103,24 @@ memcpy (void *s1, /**< destination */ const void *s2, /**< source */ 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; const uint8_t *area2_p = (const uint8_t *) s2;